Python正则表达式匹配世界但排除某些短语

时间:2014-07-26 13:36:42

标签: python regex

我有以下情况:

1)car is on fire
2)found fire crews on scene

我希望在关键字"工作人员"不存在。换句话说,我想1)返回" fire",并且2)什么也不返回。

regex = re.compile(r'\bfire (?!crews)\b')

但未能匹配"汽车着火了#34;由于火灾后失去了空间。

提前致谢。

2 个答案:

答案 0 :(得分:2)

你的正则表达式是,

\bfire\b(?!.*\bcrews\b)

DEMO

如果你想打印整行,你的正则表达式就是,

.*\bfire\b(?!.*\bcrews\b).*

Python代码,

>>> import re
>>> data = """car is on fire
... found fire crews on scene"""
>>> m = re.search(r'\bfire\b(?!.*\bcrews\b)', data, re.M)
>>> m.group()
'fire'
>>> m = re.search(r'.*\bfire\b(?!.*\bcrews\b).*', data, re.M)
>>> m.group()
'car is on fire'

答案 1 :(得分:1)

你在这里不需要正则表达式。您只需使用in关键字检查:

if "fire" in line and "crews" not in line:
    print("fire")