1
我有一個使用套接字連接與另一個應用程序(調試器連接到嵌入式目標的確切對象)進行通信的Python腳本。搜索包含回車符和換行符的子串
調試器的響應可能會有所不同,但可以跨越多行,但始終以True\r\n
或False\r\n
結束。我想要捕捉True
或False
,包括換行符。
我正在使用的正則表達式(例如,r'^[.]+|[\r]+|[\n]+(True\r\n)$'
爲True)在regex101.com上測試時似乎可行,但在Python中運行時僅返回\r
。
示例代碼與樣本響應字符串:
import re
sample_response = 'var0 = 0x00000001\r\nTrue\r\n'
re_true = re.compile(r'^[.]+|[\r]+|[\n]+(True\r\n)$')
print re_true.search(sample_response).group(0) # Will print out '\r'
我知道有一些根本性的錯誤我使用正則表達式。我也試過正回顧後如下圖所示,這似乎工作,但我不知道這是否是這樣做的正確方式:
import re
sample_response = 'var0 = 0x00000001\r\nTrue\r\n'
re_true = re.compile(r'(?<=(True\r\n))')
print re_true.search(sample_response).group(0) # Will print out ''
print re_true.search(sample_response).group(1) # Will print out 'True\r\n'
是的,但regex101沒有'\ r',其換行的風格是'\ N'。你的正則表達式在你嘗試輸入'\ r'之前與''r''匹配,並且它是在NFA正則表達式中獲勝的第一個選擇。嘗試're.findall'或重新考慮要求。 –
是的,我在regex101.com上使用\ n來測試我的正則表達式......不管那個,regex101的參考可能是TMI,並不是真的是我的問題:) – schaazzz
我會用findall來測試...謝謝! – schaazzz