假設我們有字符串「米飯加牛奶」和另一個像「白米」。我想用一個正則表達式來取第二個字符串,或者是其中有「大米」但沒有「大米」的任何字符串。在談到套,這將是該組中的所有字符串,它包含「飯」,但不是「飯」Python中的正則表達式的補充
我一直在試圖與^
功能延伸到的話,而不是隻字符,|
玩,組,但我找不到解決方案。
假設我們有字符串「米飯加牛奶」和另一個像「白米」。我想用一個正則表達式來取第二個字符串,或者是其中有「大米」但沒有「大米」的任何字符串。在談到套,這將是該組中的所有字符串,它包含「飯」,但不是「飯」Python中的正則表達式的補充
我一直在試圖與^
功能延伸到的話,而不是隻字符,|
玩,組,但我找不到解決方案。
你應該能夠做到這一點使用 「排除模式」:
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
作爲「任何空格」 - 但我想你只是用它作爲例如,你或許可以找出「不能跟隨我想要的東西」的正則表達式。
請注意'/正則表達式/'符號來自perl。在python中'/'會被替換爲'''。 – SethMMorton
你不需要()周圍的稻米嗎? –
澄清:你需要一個Python兼容的正則表達式,它匹配一個字符串,該字符串沒有'space'其次是'。我的理解是否正確? – Floris
這是正確的,我希望字符串與'米'沒有後跟'空格後跟' –