[^()]+|(?R))*)/",$string,$matches)) { echo ""; p"/> [^()]+|(?R))*)/",$string,$matches)) { echo ""; p">

嵌套正则写法,该怎么解决

WBOY
풀어 주다: 2016-06-13 13:05:34
원래의
899명이 탐색했습니다.

嵌套正则写法

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
$string = "some text (a(b(c)d)e) more text"; 
if(preg_match("/\((?>[^()]+|(?R))*\)/",$string,$matches)) 
{ 
echo "<pre class="brush:php;toolbar:false">"; print_r($matches); echo "
로그인 후 복사
"; }

上面是网上找到的嵌套正则写法,把string改成:
$string = 'some text
cd
e
more text';

改成这样后,正则规则我换不过来了,亲大虾帮忙改一下。

最好能做到个数不确定的嵌套匹配

------解决方案--------------------
PHP code
<?php $string = 'some text <tag:cate name="a">a<cate name="b">b<cate>c</cate>d</cate>e more text';
preg_match("/<cate name='\"\w+\")?'>(?>\w+|(?R))*/",$string,$matches) &&
    print_r($matches); <div class="clear">
                 
              
              
        
            </div></cate>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿