python - python 正则表达式中的 Re.search 未按预期工作

标签 python regex

问题:

我是 python 的初学者,并且使用 python 的正则表达式引擎。我能够将几个示例正则表达式模式与我的种子文件匹配,但奇怪的是,我无法匹配示例文件中包含单词“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

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

最佳答案

您的模式是:

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:

你可以看到这个工作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 .

关于python - python 正则表达式中的 Re.search 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50902576/

相关文章:

python - 如何将 HTML 代码集成到 Python 脚本中?

python - 在 Python 中将 STDOUT 十六进制输出转换为字符串

python - 在 python 中,如何 'if finditer(...) has no matches' ?

python - tkinter filedialog.askopenfilename() 窗口在 python 3 中不会关闭

python - 我正在用 python 制作龙与地下城风格的游戏,但如果返回,我会得到不正确的结果

javascript - 匹配所有内括号但不匹配外括号

java - 仅当子字符串不存在时才匹配字符串的正则表达式

html - 使用正则表达式查找嵌套的 XML 标记

python - 无法在 Python 3.10 上安装 Matplotlib

Javascript正则表达式将网站上的所有链接从http转换为https