2012-05-02 61 views
2

很多伟大的正则表达式在这里回答,但我一直没能找到任何适合我的东西。这里的情况:Python正则表达式来搜索NOT和AND表达式

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

我已经试过这样:

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

没有运气似乎并不能对任何地方工作发现任何东西。

有什么想法?非常感谢!

p.s.我只是做了这个特定的例子来显示我在做什么,我不会使用正则表达式是这是我的实际问题.... :-)

+0

你是什么意思“但该代码的构建方式...是正则表达式忽略”是什么意思?如果正则表达式被忽略,它有什么目的? –

+0

的含义...如果我自己写的话,我会'接受'基于正则表达式,所以它只是10 | 20 | 50 – busboy10

+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