php preg_match_all和recursive rexep

时间:2017-01-09 14:07:52

标签: php regex

我对生成的文件有些麻烦,我想做一些替换

说我有这种模式:

<ul/><htmlelement>some text</htmlelement>

我想用我的regexep找到一些文本的值,因为我可以找到带有正则表达式的元素htmlelement,我希望递归地将它包含在正则表达式中

preg_match_all("#<ul/><([^><])>(.)*</(first capuring match)>#", $string, $matches);

你有解决方案吗?

1 个答案:

答案 0 :(得分:0)

  1. 您错过了&#34; htmlelement&#34;的+量词。打开标签。

  2. 您需要捕获组内的*

  3. 最好使?非贪婪。

  4. 参考&#34;首先捕获匹配&#34;与\1

  5. 所以正则表达式应该是:

    <ul\/><([^><]+)>(.*?)<\/\1>
                 ^    ^^     ^
                 1    23     4
    

    演示:https://regex101.com/r/f25N9J/1