检索在python中,regex没有按预期工作

2024-03-29 00:49:41 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:

我是python的初学者,使用python的regex引擎。我能够将几个示例regex模式与我的种子文件匹配,但奇怪的是,我无法匹配包含单词“repeat”的示例文件中的行。原因是什么?你知道吗

示例文本:

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

这不起作用(不产生任何匹配)


Tags: 文件示例timebyteprogramregexwriteflash
1条回答
网友
1楼 · 发布于 2024-03-29 00:49:41

你的模式是:

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忽略空格,那么可以使用^{}标志来告诉它忽略模式中的空格:

if re.search(regex_rep, eachline, flags=re.IGNORECASE|re.VERBOSE) is not None:

你可以看到这个工作at regex101。你知道吗


如果要确保将repeat作为一个整体匹配,而不是作为repeatable这样的较大单词的一部分匹配,可以使用\b特殊字符,该字符:

Matches the empty string, but only at the beginning or end of a word…

regex_rep = r"\brepeat\b"

您可以在操作at regex101中看到这一点。你知道吗

相关问题 更多 >