2011-01-09 512 views
0
s = 'blah blah blah... _ABC_superman_is_cool_CBA_ ...blah blah blah...' 

這只是一個例子,但我想匹配_ABC_和_CBA_之間的所有內容。所以'superman_is_cool'。可能有_ABC _..._ CBA_的多個部分。正則表達式:不匹配字符串的匹配順序

re.findall('_ABC_(.*)(?=_CBA_)', s) 

我首先嚐試了這一點,但顯然不能正確工作。

回答

6

我增加了一個額外的_ABC__CBA_對以確保它找到的所有比賽:

>>> s = 'blah blah blah... _ABC_superman_is_cool_CBA_ ...blah blah _ABC_blah_CBA_...' 
>>> re.findall('_ABC_(.*?)_CBA_', s) 
['superman_is_cool', 'blah'] 

?使*運營商非貪婪所以認定爲儘可能短的比賽。沒有它,結果將是['superman_is_cool_CBA_ ...blah blah _ABC_blah']

+0

+1不過得去貪婪咬傷;) – delnan 2011-01-09 07:00:41

0

試一下這個

re.findall('_ABC_.*_CBA_)', s) 
+0

這不是一個有效的正則表達式。 – jairajs89 2011-01-09 06:56:00