比如我写个这样的正则表达式:(\(\1\))
这个能匹配(((())))无限递归括号的情况么???
求详解!!!

解决方案 »

  1.   

    无法做到。这种递归式在正则表达式无法实现,据我所知,今后的正则表达式也不会有这种功能。目前仅有 .net 中一种称为平衡组的语法才能支持这样的正则表达式。
      

  2.   

    .net 的平衡组可以,PHP、JavaScript也可实现,因为它们有(?R):递归地替换它所在的整条正则表达式。
    参考一网上的例子:<?php 
    $string = "some text (a(b(c)d)e) more text"; 
    if(preg_match("/\(([^()]+|(?R))*\)/",$string,$matches)) 

    echo "<pre>"; print_r($matches); echo "</pre>"; 

    ?> 遗憾的是,JAVA好象不支持(?R)。