我需要一个使用方法“preg_match_all”在PHP中提取的正则表达式,它在java源代码中找到关于if语句的所有匹配项。我找到了一个匹配if声明,但我还需要捕获块的内容。如果您有任何改进我的正则表达式的建议或只是想有一个更好的建议,请提交答案。
这是我的正则表达式:/(?:if|else).*\{/
这是结果:
array(1
0 => array(3
0 => if(i=1){
1 => if(i=2){
2 => else{
)
)
我正在寻找的是这样的:
array(1
0 => array(3
0 => if(i=1){
0 => c++;
0 => }
1 => if(i=2){
1 => c=c+2;
1 => }
2 => else{
2 => c--;
2 => }
)
)
答案 0 :(得分:1)
常规 if / else 语句的结构如下
if (<condition>)
{ <body> }
else [if (<condition>)]
{ <body> }
可能会遇到关键字空格之间的任何地方。因此,您应该考虑到这一点。
这是一个正则表达式的例子,可以找到简单的if / else语句。它无法找到 else if 阻止。
if\([\w\s!=|&^]*\)\s*{[^}]*}(\s*else(\s*if\([\w\s!=|&^]*\))*\s*{[^}]*})*
这个正则表达式不是完美的解决方案,它还需要适应发动机的使用。您可以查看其工作原理here。