正则表达式匹配if ... else语句?

时间:2013-02-22 22:47:39

标签: php regex

我需要制作一个匹配“if”结构的正则表达式。 EG:

if(whatever) {  } else { adsffdsa } else if() { }

代码块和表达式是否有效无关紧要,只有结构是正确的。我达到了这一点:

/^if\s*\((.*?)\)\s*{(.*?)}\s*//

然而,当我尝试继续匹配else时,如果正则表达式停止工作。我尝试了这两件事:

/^if\s*\((.*?)\)\s*{(.*?)}\s*else?/
/^if\s*\((.*?)\)\s*{(.*?)}\s*(else|else\s*if(\s*))?/

如果有的话,我如何使我的正则表达式与else语句匹配?

1 个答案:

答案 0 :(得分:0)

你走了,这应该让你指向正确的方向,但是你做得越复杂就越难看。

/^if\s*\((.*?)\)\s*{(.*?)}(\s*(else|else\s+if\s*\((.*?)\))\s*{(.*?)})*/

希望有所帮助

它符合我的要求所以它应该匹配大多数情况(只要它在块的任何地方都没有注释):

if(whatever) {  } else { adsffdsa } else if() { }
else if() {}
相关问题