Python正则表达式搜索,匹配不匹配

克里斯1112

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

我想检查一下是否正确。所以我有我的正则表达式

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

可以找到以下文本:

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

现在在python中,我使用re.findall查找正确的文本,加入找到的模式,然后将其与起始文本的长度进行比较。但是由于某种原因,它不起作用。

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

例如,这将导致错误:

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

但是它也找到第二行,因此字符数与my找到的字符数相同findall还有其他选择,还是我想念的东西?

安蒂·哈帕拉(Antti Haapala)

问题恰恰是您在使用re.DOTALLakaS标志。DOTALL表示点与换行符匹配;如果将其取出,则匹配项无法跨到新行。


但是,更好的解决方案是分别测试每个记录。例如,如果它们之间用逗号分隔,则应先将分隔,,然后使用re.match将单个规则与正则表达式进行匹配。请注意,re.match它不是锚定在字符串的末尾,因此您需要添加一些内容$以确保需要与确切的字符串进行匹配(尽管此处没有必要):

就像是:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式或不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

在Python中搜索/匹配正则表达式

来自分类Dev

正则表达式搜索/匹配Python CSV

来自分类Dev

正则表达式的正则表达式在Python中不匹配

来自分类Dev

Python正则表达式与行首不匹配

来自分类Dev

python中的正则表达式与单词不匹配

来自分类Dev

Python正则表达式不匹配

来自分类Dev

Python正则表达式不匹配多个组

来自分类Dev

简单的Python正则表达式不匹配

来自分类Dev

Python正则表达式与模式不匹配

来自分类Dev

股票期权的 Python 正则表达式不匹配

来自分类Dev

根据python,正则表达式不匹配

来自分类Dev

表达式不匹配正则表达式

来自分类Dev

Python正则表达式匹配

来自分类Dev

当正则表达式工具表明它应该匹配时,python正则表达式不匹配

来自分类Dev

当正则表达式工具表明它应该匹配时,python正则表达式不匹配

来自分类Dev

匹配单词的正则表达式,或者不匹配

来自分类Dev

完全匹配的正则表达式不部分匹配

来自分类Dev

正则表达式匹配不匹配的内容

来自分类Dev

正则表达式匹配任何字符或不匹配?

来自分类Dev

正则表达式匹配数字或不匹配

来自分类Dev

完全匹配的正则表达式不部分匹配

来自分类Dev

C ++正则表达式匹配,不匹配