字词完全匹配

巴斯卡娅

我想使用正则表达式,如果一个句子包含我要查找的单词之一,则匹配。

所有这些现在都匹配,这是不正确的。我对words(如" seven ")中的所有单词都使用了“”,但这一次如果单词在字符串的末尾,则不匹配。

words = ('seven', 'eight')
regex = re.compile('|'.join(words))
print regex.search('aaaaaasd seven asdfadsf')   #1 - should match
print regex.search('AAAsevenAAA')               #2 - shouldn't match
print regex.search('AAA eightaaa')              #3 - shouldn't match
print regex.search('eight aaa')                 #4 - should match
print regex.search('aaaa eight')                #5 - should match

如果匹配的单词是单词的子字符串之一(例如上面的#2和#3),如何使我的正则表达式不匹配?

wn

正如@CasimiretHippolyte指出的那样,您想添加单词边界如果您不想为列表中的每个单词手动执行此操作,则需要修改已编译的正则表达式。

regex = re.compile(r'\b(?:%s)\b' % '|'.join(words))

注意:如果您的正则表达式中包含转义序列,则最好使用原始字符串表示法。通过使用非捕获(?:...)组,这可以将您的单词与周围的单词边界分组在一起,否则,它会在开头和结尾处放置一个边界。

Ideone演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章