正则表达式判断if(){}else{}表达式是否正确

如题所述

该问题的关键是判断括号或花括号是否成对匹配的问题,在正则表达式中的解决手段是平衡组,语法如下:
(?<group>) 把捕获的内容命名为group,并压入堆栈
(?<-group>) 从堆栈上弹出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空,则本分组的匹配失败
(?(group)yes|no) 如果堆栈上存在以名为group的捕获内容的话,继续匹配yes部分的表达式,否则继续匹配no部分
(?!) 顺序否定环视,由于没有后缀表达式,试图匹配总是失败

举例:
字符串:a+(b*(c+d))/e+f-(g/(h-i))*j
正则表达式:((?<Open>\()|(?<−Open>)|[^()])*(?(Open)(?!))\)
需求说明:匹配成对出现的()中的内容
输出:(b*(c+d)) 和 (g/(h-i))
温馨提示:答案为网友推荐,仅供参考
相似回答