2016-09-30 12 views
0

私はここで前の答えを試してみました。私はいくつかのサブセットしか見つけられませんでした。Pythonの正規表現は2つの文字ペアの間のすべての部分文字列を見つける

ここに私が取り組んでいるコードとサンプルがあります。

s = "{| mySting0 |} The {| mySting1 |} The {| mySting2 |} The {| mySting3 |} make it work " 

result = re.findall('{\|(.*)|}', s) 

出力は、ある

[' mySting0 |} The {| mySting1 |} The {| mySting2 |} The {| mySting3 |} make it work '] 

は私が間違って何をしているのですか?

+5

"*何が間違っていますか?" - 欲張りな正規表現を使用し、2番目のパイプ文字をバックスラッシュでエスケープしないでください。 – TessellatingHeckler

答えて

3

あなたは、この正規表現を使用することができます。

>>> s = "{| mySting0 |} The {| mySting1 |} The {| mySting2 |} The {| mySting3 |} make it work " 
>>> re.findall(r'{\|(.*?)\|}', s) 
[' mySting0 ', ' mySting1 ', ' mySting2 ', ' mySting3 '] 

変更点は以下のとおりです。代わりに

  • .*貪欲Excape第二の

    1. 使用怠惰な数量詞.*?|だけでなく、あなたの正規表現で
    関連する問題