1

我正在解析一些 HTML,我需要在 body 标记中获取所有 html。我的目标字符串将始终如下所示:

<body><div><img src="" />text etc</div></body>

但是,我只需要:

<div><img src="" />text etc</div>

我的目标字符串将始终以这些正文标签开始和结束。但是,反复警告不要使用 Regex 解析 HTML,但目前除了 Regex 之外,我没有任何可行的解决方案。

问题:在这种情况下是否有任何安全的正则表达式可以使用?还是我应该忘记它?

4

2 回答 2

3

您没有向我们展示您的正则表达式是什么,但它不如使用 DOM 解析安全,如果它像以下那样简单:

<body>(.*?)</body>

...因为它可能</body>包含在属性字符串或注释中。如果你愿意承担这个风险,那么你会没事的。不过,您没有理由不能使用 DOM 解析并仅获取正文的文本,除非它可能效率较低。

您也可以跳过正则表达式,只找到 and 的字符串索引<body></body>获取它们之间的子字符串。那应该更快。

顺便说一句,这不是解析HTML;您只是从 HTML 中提取

于 2013-05-18T23:52:27.337 回答
0

在这种情况下可以使用 RegEx。话虽如此,有更简单的方法来获取 body 标记的 innerHTML。

 alert(document.body.innerHTML); 

应该在没有 RegEx 的情况下准确地为您提供......或者如果您使用的是 jQuery

$(body).html();
于 2013-05-18T23:50:27.157 回答