正则表达式找到A而不是B在一条线上

时间:2010-04-09 20:09:55

标签: python regex textmate

我正在寻找一个正则表达式来搜索我的python程序,找到foo而不是bar的所有行作为关键字参数传递给方法。我正在玩前瞻和后瞻性断言,但没有太多运气。

任何帮助?

由于

3 个答案:

答案 0 :(得分:10)

如果您要查找的字符串foo和另一个不能出现的字符串bar,您可以使用此字符:

^(?!.*bar).*foo

创建一个完全符合您所有要求的正则表达式非常困难,因为Python代码不是常规语言,但希望您能够以此为出发点来获得足够满足您需求的东西。

答案 1 :(得分:4)

在之后{/ 1}} 在这些场景中的前瞻似乎总是对我有用。阅读它对我来说也更有意义。

^

(?!.*bar)^.*foo

答案 2 :(得分:1)

您也可以使用正则表达式执行此操作:

for line in file:
    if "foo" in line and "bar" not in line:
        #do something