Python Regex搜索NOT和AND表达式

时间:2012-05-02 20:52:00

标签: python regex regex-negation

这里有很多很棒的正则表达式答案,但我找不到任何对我有用的东西。情况如下:

我有一大堆数字。假设它只是一个从1到100的数字列表,我只想使用包含10,20和50的列表。但代码的构建方式(并且无法更改!)将被忽略正则表达式不接受。所以,我不能只说^10$|^20$|^50$而是我不需要他们然后和他们。

我试过这个:

(?!^10$)(?!^20$)(?!^50$) 

没有运气,似乎找不到任何有效的地方。

有什么想法?非常感谢!

P.S。我刚刚做了这个特殊的例子来展示我在做什么,我不会使用正则表达式这是我遇到的实际问题....: - )

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你需要的是这样的:

(?!^10$)(?!^20$)(?!^50$)^.*$

如果该行的内容与"10""20""50"不同,则会匹配。

但是,这似乎是处理问题的一种相当麻烦的方式。这条线上的更多东西不会更好吗?

import re
pattern = re.compile(r"^(?:10|20|50)$")
for text in list_of_texts:
  m = pattern.match(text)
  if m is not None:
    print "Found something interesting (not 10, nor 20 nor 50): %s" % text