簡體   English   中英

使用正則表達式或其他方法在字符串python中查找單詞

[英]Find a word in a string python using regex or other methods

我試圖遍歷單詞數組,並檢查它們是否存在於字符串中。 我知道有很多方法可以做到這一點,例如使用re.search,但是我需要在某些詞之間有所區別(即Java與Javascript)

一個例子:

import re

s = 'Some types (python, c++, java, javascript) are examples of programming.'
words = ['python', 'java', 'c++', 'javascript', 'programming']

for w in words:
    p = re.search(w, s)
    print(p)

>><_sre.SRE_Match object; span=(12, 18), match='python'>
>><_sre.SRE_Match object; span=(20, 24), match='java'>
>><_sre.SRE_Match object; span=(20, 30), match='javascript'>
>><_sre.SRE_Match object; span=(48, 59), match='programming'>

上面的方法在一定程度上起作用,但是將Java與Javascript匹配。

編輯:這是我的解決方案

for w in words:
        regexPart1 = r"\s"
        regexPart2 = r"(?:!+|,|\.|\·|;|:|\(|\)|\"|\?+)?\s"
        p = re.compile(regexPart1 + re.escape(w) + regexPart2 , re.IGNORECASE)
        result = p.search(s)

您想在正則表達式上添加單詞邊界標記,例如用r'/bjavascript/b'代替'javascript' (另請注意, +應該在c++轉義)

另外,要匹配的單詞迭代缺乏潛在的編譯正則表達式效率。 最好將正則表達式合並為一個:

w = r'\b(?:python|java|c\+\+|javascript|programming)\b'
re.search(w,s)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM