我想编写一个正则表达式来搜索某些单词的存在,但是它们的出现顺序无关紧要。
例如,搜索“ Tim”和“ stupid”。我的正则表达式是Tim.*stupid|stupid.*Tim。但是是否可以编写一个更简单的正则表达式(例如,使两个单词在正则表达式本身中仅出现一次)?
Tim.*stupid|stupid.*Tim
请参阅此正则表达式:
/^(?=.*Tim)(?=.*stupid).+/
正则表达式说明:
^
(?=.*Tim)
(?=.*stupid)
.+
.++
要更专门地使用先行,您可以添加另一个(?=.*<to_assert>)组。整个正则表达式可以简化为/^(?=.*Tim).*stupid/。
(?=.*<to_assert>)
/^(?=.*Tim).*stupid/
观看正则表达式演示!
>>> import re >>> str =""" ... Tim is so stupid. ... stupid Tim! ... Tim foobar barfoo. ... Where is Tim?""" >>> m = re.findall(r'^(?=.*Tim)(?=.*stupid).+$', str, re.MULTILINE) >>> m ['Tim is so stupid.', 'stupid Tim!'] >>> m = re.findall(r'^(?=.*Tim).*stupid', str, re.MULTILINE) >>> m ['Tim is so stupid.', 'stupid Tim!']