[英]Re.search in python regex not working as intended
題:
我是python的初學者並使用python的正則表達式引擎。 我能夠將幾個示例正則表達式模式與我的種子文件匹配,但奇怪的是,我無法匹配我的示例文件中包含“重復”一詞的行。 以下是我的問題的上下文。 可能是什么原因?
示例文本:
import tset flash_read, flash_writ;
vector ( $tset, (XMOSI,XMISO,XSGLK,XSTRMSTRT,XSTRMSGLK,XSTRMGKEN,XXTALIN,XXTALGPUEN,XHV (XSTRM03,XSTRMO2,XSTRM01,XSTRIADO,XNSS3,XNSS2,XNSS1,XNSSOH, XTEGLOGK, XRXDATA, XRXENABLE, XTXDATA, XTXENABLE, XNRESET, ROOK, XTMS, XTDI, XTDO, XNTRST))
> flash_writ .d0000 .dFF 1 01 01 01 01 X 1; // write byte 0
> flash_writ .d0001 .dFF 1 0 1 0 1 01 01 X 1; // write byte 1
repeat 25> flash_writ .d0000 .d00 1 1 1 0001 0 1 X 1; // wait program time
> flash_writ .d0002 .dFF 1 0 1 0 1 0 1 0 1 X 1; // write byte 0
> flash_writ .d0003 .dFF 1 0 1 0 1 0 1 0 1 X 1; // write byte 1
repeat 25> flash_writ .d0000 .d00 1 1 1 0001 0 1 X 1; // wait program time
> flash_writ .d0004 .dFF 1 01 01 01 01 X1, 11 write byte 0
> flash_writ .d0005 .dFF 1 01 01 01 01 X1; // write byte 1
repeat 25> flash_writ .d0000 .d00 1 1 1 0001 0 1 X 1; // wait program time
用於正則表達式搜索的 Python 語法:
regex_rep = r” repeat "
for num, eachline in enumerate(files_atp):
if re.search(regex_rep, eachline, flags=re.IGNORECASE) is not None:
print eachline
這不起作用(不產生任何匹配)
你的模式是:
regex_rep = r" repeat "
這將匹配每端有一個空格的單詞repeat
。
但你的線條看起來像這樣:
repeat 25> flash_writ .d0000 .d00 1 1 1 0001 0 1 X 1; // wait program time
repeat
之前沒有空格,因此它與您的模式不匹配。
很難建議如何解決這個問題,因為我不確定你為什么首先將這些空格放在模式中。
如果他們無緣無故地在那里,就擺脫他們:
regex_rep = r"repeat"
但是,在這種情況下,您根本沒有使用re
任何功能,因此您的測試最好寫為:
if "repeat" in eachline:
如果它們在那里使模式更具可讀性,並且您想re
忽略空格,則可以使用VERBOSE
標志告訴它忽略模式中的空格:
if re.search(regex_rep, eachline, flags=re.IGNORECASE|re.VERBOSE) is not None:
您可以在 regex101 上看到此功能。
如果您想確保將repeat
作為一個完整的詞進行匹配,而不是作為一個更大的詞的一部分(如repeatable
,您可以使用\\b
特殊字符,它:
匹配空字符串,但僅在單詞的開頭或結尾...
regex_rep = r"\brepeat\b"
您可以在 regex101 中看到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.