2016-09-30 81 views
0

我已經嘗試了以前的答案在這裏。我能夠找到幾個只有一個子集。Python的正則表達式找到兩個字符對之間的所有子字符串

這裏是我工作的代碼和示例。

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

「*我做錯了什麼?*」 - 使用貪婪的正則表達式,而不是用反斜槓轉義第二個管道字符。 – TessellatingHeckler

回答

3

你可以使用這個表達式:

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

的變化是:

  1. 使用惰性限定符.*?,而不是貪婪.*
  2. Excape第二|以及在你的正則表達式
相關問題