阅读(1570) (0)

正则表达式 平衡组/递归匹配

2016-02-24 16:10:53 更新

平衡组用于匹配嵌套层次结构,常用于匹配HTML标签(当HTML内容不规范,起始标签和结束标签数量不同时,匹配出正确配对的标签),在此把表达式统一以\w为例。

  • (?'group'\w) 捕获的分组(\w匹配到的内容)命名为group,并压入堆栈
  • (?'-group'\w) 捕获分组(\w匹配到的内容)后,弹出group分组栈的栈顶内容(最后压入的捕获内容),堆栈本来为空,则本分组的匹配失败
  • (?(group)yes|no) 如果group栈非空匹配表达式yes,否则匹配表达式no
  • (?!) 零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败