正则表达式模式,以避免匹配某些单词,如自定义否定

时间:2015-01-05 07:10:48

标签: python regex

我正在使用正则表达式来匹配特定模式。比如,一个匹配所有三个字母单词的模式。但我希望它不匹配像'和','得到'之类的单词......在Python中用最好的方法做什么。

我的模式是

r'\b\w{3}\b'

我试过

r'(\b\w{3}\b)(?!and)'

但失败了。

1 个答案:

答案 0 :(得分:4)

正则表达式从左到右匹配,前瞻也不例外。您的表达式将匹配三个字母,后面没有and (顺便说一句,由于\b,这是不可能的。)

\w之前移动前瞻以使其正常工作:

r'(\b(?!and)\w{3}\b)'

你可以在那里添加更多单词 -

r'(\b(?!and|got|may)\w{3}\b)'

但是对于更多不匹配,匹配所有三个字母单词并使用代码去除它们的结果可能更有效。