使用正则表达式或其他方法在字符串python中查找单词

时间:2015-12-11 20:18:45

标签: python regex

我正在尝试查看一系列单词并检查它们是否存在于字符串中。我知道有很多选择这样做,比如使用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)

1 个答案:

答案 0 :(得分:1)

您想为正则表达式添加单词边界标记,比如r'/bjavascript/b'代替'javascript'。 (另请注意,+}

应转义c++

此外,迭代匹配的单词缺乏编译正则表达式的潜在效率。将正则表达式合并为一个可能更好:

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