首先,我不是正则表达式专家,所以我很确定我做错了什么.
这是我的正则表达式:
<(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并且很好.
任何想法都将非常感激.
使用正则表达式匹配无法解决此问题.认真.我不只是重复"不用正则表达式解析HTML"的教条; 正则表达式在逻辑上无法处理嵌套标记(这就是为什么每个人都说"不用正则表达式解析HTML")
我能给你的最好的想法是使用XML解析器.如果你坚持使用正则表达式来解决这个问题,你最终会编写自己的递归下降解析器,所以你也可以利用其他人已经对这个问题所做的工作.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |