匹配多行正则表达式,以if开头,以以大括号结尾的行结尾

时间:2019-03-18 19:48:48

标签: regex python-3.x if-statement multiline

我有一个很长的PHP“类”,其中包含许多我想用Python脚本转换的if块。因此,我想匹配每个“父级” if块,并将其作为项目传递到列表中以进行进一步处理。

pattern = re.compile(r'^if[^(\n\})]*\}$', re.M)
result = re.findall(pattern, filecontent)

所以我现在尝试了许多变体,但到目前为止没有成功。当然,在那些if块中有嵌套if语句的情况。因此,我们不能只等到下一个大括号就匹配。

幸运的是,代码的格式很干净,因此我可以匹配多行,从以'if'开头的行开始,到以'。'开头的大括号结束。

^if         // line starting with 'if'
[^(\n\})]*  // followed by zero or more characters that are not
            // a closing curly brace preceded by a newline character
\n\}$       // ending with a closing curlybrace preceded by \n

这种方法似乎是我最好的尝试。但这不匹配任何东西。

这里有一些测试片段,对其进行处理应产生3个列表项: https://pastebin.com/2WHC1k6f

0 个答案:

没有答案