正则表达式的终极能力 - 递归
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)
简单翻译了下这个文档:
博客围绕正则表达式的递归能力展开,作者询问如何写匹配递归式的正则表达式,未在语法中找到相关内容,后在电子书中发现讲解并记录。还给出匹配有效最多括号语法的正则表达式示例,如匹配出特定文本中的有效括号内容。
1438

被折叠的 条评论
为什么被折叠?



