1

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

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

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

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

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

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

如果有的话,我怎样才能让我的正则表达式匹配 else 语句?

4

1 回答 1

1

给你,这应该让你指向正确的方向,但你做得越复杂,它就会变得丑陋。

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

希望能帮助到你

它为我匹配了这个,所以它应该匹配大多数情况(只要它在块周围的任何地方都没有评论):

if(whatever) {  } else { adsffdsa } else if() { }
else if() {}
于 2013-02-22T23:01:14.403 回答