我有一个很长的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