这个正则表达式有什么问题?

Fre*_*ddy 1 regex xml

首先,我不是正则表达式专家,所以我很确定我做错了什么.

这是我的正则表达式:

<(list)(\b[^>]*)>(<\1\b[^>]*>.*?<\/\1>|.)*?<\/\1>
Run Code Online (Sandbox Code Playgroud)

这是输入字符串:

...
<list title="Lorem ipsum dolor sit amet, consectetur adipiscing elit...">
<li>
    <list title="Lorem adipiscing...">
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit</li>
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit</li>
    </list>
</li>
<li>
     <list title="Lorem ipsum...">
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit</li>
    </list>
</li>
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit
</li>
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit
</li>
</list>
...
Run Code Online (Sandbox Code Playgroud)

我想匹配外部<list>并捕获包括intertal在内的所有内容,<list>但是当我尝试阅读该组时,它\3是空的\1,\2并且很好.

任何想法都将非常感激.

Dav*_*d Z 6

使用正则表达式匹配无法解决此问题.认真.我不只是重复"不用正则表达式解析HTML"的教条; 正则表达式在逻辑上无法处理嵌套标记(这就是为什么每个人都说"不用正则表达式解析HTML")

我能给你的最好的想法是使用XML解析器.如果你坚持使用正则表达式来解决这个问题,你最终会编写自己的递归下降解析器,所以你也可以利用其他人已经对这个问题所做的工作.