问题描述
我对Python正则表达式模糊搜索有疑问。
这有效:
import regex
s = '2991 Nixon Avenue Chattanooga Tennessee'
regex.search(r"(?msi)(?=.*\bnixon\b)(?=.*\bchattanooga\b)",s)
这不起作用(从t
中删除了Chattanooga
):结果None
import regex
s = '2991 Nixon Avenue Chatanooga Tennessee'
regex.search(r"(?msie)(?=.*\bnixon\b)(?=.*\bchattanooga\b){e=<3}",s)
我在这里做什么错了?
看起来好像是正面的前瞻性和单词边界。
注意:这只是使其工作的简单示例。我现实是更复杂的工作的一部分。
此外,我是否需要为每个正则表达式项(nixon
,chattanooga
)指定模糊性,还是可以同时针对两者进行设置? ((?=.*\bnixon)(?=.*\bchattanooga\b)){e=<3}
解决方法
我将模糊性应用到前瞻本身而不是应用 内容。
如果“ Chattanooga”模糊,请执行以下操作:
regex.search(r"(?msie)(?=.*\bnixon\b)(?=.*\b(?:chattanooga){e<=3}\b)",s)