-2

如何使用正则表达式获取带有嵌套标签的innerhtml

例子:

<div class="def">
<ul>
<li>..</li>
<li>..</li>
</ul>
</div>

<div class="def">
<ul>
<li>..</li>
<li>..</li>
</ul>
</div>

当我使用这段代码时,我只需要这段代码的第一个 div 内容, "(?s)(<div\\sclass=\"def\">(.+)<\\/div>)" 我得到了两个 div 内容

如何单独获得第一个?

请帮忙...

4

1 回答 1

7

这是因为.+在您的正则表达式中..将其更改为.+?

但是你永远不应该使用正则表达式来解析 html ..

使用HTML 解析器,这是获取 div的方法


为什么要使用解析器?

考虑您的正则表达式。有无数种情况可以破坏您的代码

  • 如果有嵌套的div ,您的正则表达式将不起作用
  • 有些 div 没有结束标记!(XHTML 除外)

总而言之,永远不要使用正则表达式来解析 html

于 2013-07-04T04:04:59.627 回答