我试图检查输入文件的语法,我的项目的规则在哪里。在
我想看看这是否正确。所以我有我的正则表达式
\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
找到的字符数相同。还有其他的选择吗,或者我遗漏了什么?在
问题是您使用的是^{} a.k.a
S
标志。DOTALL
表示该点甚至与换行符匹配;如果take it out,则匹配不能跨越到新行。在然而,更好的解决方案是分别测试每个记录;例如,如果它们用逗号分隔,则首先用
,
分割,然后使用re.match
来匹配正则表达式中的单个规则。注意,re.match
没有锚定到字符串的末尾,因此您需要添加额外的$
,以确保需要与确切的字符串匹配(尽管这里不需要):比如:
相关问题 更多 >
编程相关推荐