正则表达式的终极能力 - 递归
Posted on Thursday, January 27, 2005 6:26 PM href="http://blog.sunmast.com/sunmast/Services/Pingback.aspx" rel="pingback"/>今天在QQ问liuzhi如何写一个匹配递归式的正则表达式时,没想到那家伙居然就回答“递归消除”,让我去看编译原理的书。(nnd,他肯定想到正则表达式的实现去了...)
找遍了正则表达式的语法都没发现和递归有关或者可以间接用来实现递归的,不过今天在硬盘找到一个电子书(只有一章),居然有讲解了这个。窃喜,记录之。
例子是:
/((?>[^()]+|/((? )|/)(?<-DEPTH>))*(?(DEPTH)(?!))/)
这个是匹配有效的最多括号的语法,比如:
before (nope (yes (here) okay) after
匹配到的是:(yes (here) okay)
简单翻译了下这个文档: