2016-12-30 38 views
0

我試圖使用Python的RE獲取兩個等號(=helloThere=)之間的信息,但不是多於一個等號(==helloThere==)之間的內容。獲取兩個等號之間的字符串

這是我想出了到目前爲止,但它沒有這樣做:

result = re.findall('={1}(.*?)={1}', text) 

回答

5

使用負回顧後和負前瞻。

>>> import re 
>>> re.findall(r'(?<!=)=([^=]+)=(?!=)', '=hello there=') 
['hello there'] 
>>> re.findall(r'(?<!=)=([^=]+)=(?!=)', '==hello there==') 
[] 
+0

謝謝,這正是我一直在尋找的。 – Alshafai

0

如果只有這兩個條件:

1 - 開始,以=
2 - 應該有隻有兩個=

然後,這是我給你的建議:

s = '=helloThere=' 
test_char = '=' 
if (s[0] == s[-1] == test_char) and s.count('=') == 2: 
    print(s[1:-1]) 
    # or print(s.strip('=') 

這是有效的,如果=之間的表達式不是c繼續=

+0

感謝您的回覆。我一直在尋找findall的東西,因爲輸入字符串很長,我想查找這種模式的多次出現。 – Alshafai

+0

是的,正則表達式是你的方式,我的解決方案,你將不得不將它包裝在一個for循環,計算循環步驟,這將增加已經處理正則表達式更多的複雜性。 –

相關問題