2011-01-09 13 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) 

私はこれを最初に試みましたが、明らかに正しく動作しません。

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

?が、それはよう見つけたので*オペレータ非貪欲になります:

答えて

6

は、私はそれがすべての一致が見つかったことを確認するために、追加_ABC__CBA_ペアを追加してみてくださいできるだけ短いマッチ。それがなければ結果は['superman_is_cool_CBA_ ...blah blah _ABC_blah']になります。

+0

+1は貪欲によって噛まれていません;) – delnan

+0

Perfect!ありがとう。 – jairajs89

0

この

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

これは有効な正規表現ではありません。 – jairajs89

関連する問題