求大神讲解,百度搜了很多看不明白,希望大神能讲解一下语法是怎样的,谢谢了!
例如:
(a(b(d))c)(e(f(g))m).....
我想得到
(a(b(d))c)  和 (e(f(g))c)正则表达式嵌套匹配

解决方案 »

  1.   

    <?php
    $str = '(a(b(d))c)(e(f(g))m)';
    $reg = '#\(([^\(\)]+|(?R))*\)#';$matches = array();
    preg_match_all($reg, $str, $matches);var_dump($matches);
      

  2.   


    能吧括号换成html标签然后讲解一下吗?
      

  3.   


    能吧括号换成html标签然后讲解一下吗?
    你直接贴你自己实际代码 别人好帮你实际分析
      

  4.   

    $str = '<div id="2"><div id="4"><div id="8"></div></div><div id="5"></div></div><div id="10"><div id="35"><div id="13"></div></div><div id="59"><div id="15"></div></div></div>';
    //匹配出id为2和id为35的div所包含的内容
    $reg = '//';
    preg_match_all($reg, $str, $matches);
    echo "<pre>";
    var_dump($matches);
    echo "</pre>";
      

  5.   

    <?php
    $str = '<div id="2"><div id="4"><div id="8"></div></div><div id="5"></div></div><div id="10"><div id="35"><div id="13"></div></div><div id="59"><div id="15"></div></div></div>';
    //$reg = '#\(([^\(\)]+|(?R))*\)#';
    //匹配出id为2和id为35的div所包含的内容$reg = '#<div id="(?:2|35)">(<([^>\s]+)[^>]*>([<>]*|(?1))*?</\2>)*</div>#';
    preg_match_all($reg, $str, $matches);
    echo "<pre>";
    var_dump($matches);
    echo "</pre>";虽然可以用,但是不推荐这样用,还是用DOMDocument之类的工具获取内容比较好,毕竟他们更加擅长。
      

  6.   


    <?php
    $str = '<div id="2"><div id="4"><div id="8"></div></div><div id="5"></div></div><div id="10"><div id="35"><div id="13"></div></div><div id="59"><div id="15"></div></div></div>';
    //$reg = '#\(([^\(\)]+|(?R))*\)#';
    //匹配出id为2和id为35的div所包含的内容$reg = '#<div id="(?:2|35)">(<([^>\s]+)[^>]*>([<>]*|(?1))*?</\2>)*</div>#';
    preg_match_all($reg, $str, $matches);
    echo "<pre>";
    var_dump($matches);
    echo "</pre>";上面那个没有语法高亮