Python regex搜索,匹配不匹配

2024-04-24 14:11:55 发布

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

我试图检查输入文件的语法,我的项目的规则在哪里。在

我想看看这是否正确。所以我有我的正则表达式

\s*.*\$\s*..*\$\s*\|}\s*.*\s*,*

它会找到以下文本:

^{pr2}$

现在在python中我使用关于芬德尔为了找到正确的文本,将找到的模式连接起来,然后将其与起始文本的长度进行比较。但由于某些原因它不起作用。在

代码:rule_syntax_check = re.findall("\s*.*\$\s*..*\$\s*\|}\s*.*\s*,*", RULES, re.DOTALL)

例如,这会导致错误:

sometimes $so$ |} hello,
life $good$ |  } hello, 
not $that$ |} hello

但是它也会找到第二行,因此字符数与myfindall找到的字符数相同。还有其他的选择吗,或者我遗漏了什么?在


Tags: 文件项目代码文本rehello规则check
1条回答
网友
1楼 · 发布于 2024-04-24 14:11:55

问题是您使用的是^{}a.k.aS标志。DOTALL表示该点甚至与换行符匹配;如果take it out,则匹配不能跨越到新行。在


然而,更好的解决方案是分别测试每个记录;例如,如果它们用逗号分隔,则首先用,分割,然后使用re.match来匹配正则表达式中的单个规则。注意,re.match没有锚定到字符串的末尾,因此您需要添加额外的$,以确保需要与确切的字符串匹配(尽管这里不需要):

比如:

rules_split = RULES.split(',')
for i in rules_split:
    if not re.match(r'\s*.*\$\s*.+\$\s*\|}.*$')

相关问题 更多 >