我试图遍历一个单词数组并检查它们是否存在于字符串中。我知道有很多方法可以做到这一点,比如使用检索但是我需要在一些词之间有所区别(比如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++
中转义)此外,要匹配的字的迭代缺乏编译regexp的潜在效率。最好将regexp合并为一个:
相关问题 更多 >
编程相关推荐