2012-05-02 64 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