2013-10-15 42 views
0

假設我們有字符串「米飯加牛奶」和另一個像「白米」。我想用一個正則表達式來取第二個字符串,或者是其中有「大米」但沒有「大米」的任何字符串。在談到套,這將是該組中的所有字符串,它包含「飯」,但不是「飯」Python中的正則表達式的補充

我一直在試圖與^功能延伸到的話,而不是隻字符,|玩,組,但我找不到解決方案。

+0

澄清:你需要一個Python兼容的正則表達式,它匹配一個字符串,該字符串沒有'space'其次是'。我的理解是否正確? – Floris

+0

這是正確的,我希望字符串與'米'沒有後跟'空格後跟' –

回答

3

你應該能夠做到這一點使用 「排除模式」:

import re 
m1 = re.search('rice(?! with)', 'rice with beans') 
m2 = re.search('rice(?! with)', 'white rice is delicious') 
if m1: 
    print 'm1 matches!' 
    print m1.group(0) 

if m2: 
    print 'm2 matches!' 
    print m2.group(0) 

說明: (?是「前瞻」的開始。這是一種告訴正則表達式的方法「此時這裏應該有一些匹配......'這個表達式'的東西,在這種情況下,我們立刻用!,即(?!跟着它,這表示」負向前視「 - 」而不是後面跟着'this expression'。在這個特殊的例子中,我使用with作爲表達式 - space,然後是with。我可以選擇\s作爲「任何空格」 - 但我想你只是用它作爲例如,你或許可以找出「不能跟隨我想要的東西」的正則表達式。

0

我想你想用這個負先行,

r'.*rice(?! with).*' 

tested here

+0

請注意'/正則表達式/'符號來自perl。在python中'/'會被替換爲'''。 – SethMMorton

+0

你不需要()周圍的稻米嗎? –