平衡组用于匹配嵌套层次结构,常用于匹配HTML标签(当HTML内容不规范,起始标签和结束标签数量不同时,匹配出正确配对的标签),在此把表达式统一以\w
为例。
(?'group'\w)
捕获的分组(\w
匹配到的内容)命名为group
,并压入堆栈(?'-group'\w)
捕获分组(\w
匹配到的内容)后,弹出group
分组栈的栈顶内容(最后压入的捕获内容),堆栈本来为空,则本分组的匹配失败(?(group)yes|no)
如果group
栈非空匹配表达式yes
,否则匹配表达式no
(?!)
零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败