Regexp抓住了最新的孩子

时间:2014-08-07 13:35:16

标签: php html regex

我想抓住"(<tag>(.*?)</tag>)",但只抓住最新的孩子,例如<tag><tag>...</tag></tag>应该被忽略。

这可以在PHP中只使用一个正则表达式吗?

代码:

------------------------

<tag>
    <tag>
        <tag>
            <i> abcd <\/i>
        </tag>
    </tag>
</tag>

<tag>
    <tag>
        efgh
    </tag>
</tag>

------------------------

<tag>
    ijkl
</tag>

<tag>
    mnop
</tag>

------------------------

1 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式并捕获捕获组:

.*<\/?tag>|(.*<\/.*?>)$

<强> Working demo

enter image description here

顺便说一句,如果你想获得标签内部的任何内容(如efg和mnop)的全线,你可以使用这个:

.*<\/?tag>|(.+)$

<强> Working demo