如何使用正则表达式提取正文内容

时间:2010-09-02 14:59:58

标签: javascript html regex

我在var。

中有这段代码
<html>

    <head>
        .
        .
        anything
        .
        .
    </head>

    <body anything="">
        content
    </body>

</html>

<html>

    <head>
        .
        .
        anything
        .
        .
    </head>

    <body>
        content
    </body>

</html>

结果应该是

content

3 个答案:

答案 0 :(得分:19)

请注意,上面提供的基于字符串的答案在大多数情况下都适用。正则表达式解决方案提供的一个主要优势是,您可以更轻松地在打开/关闭正文标记上提供不区分大小写的匹配。如果您不关心这一点,那么在这里使用正则表达式没有重要理由。

对于那些将HTML和正则表达式放在一起并投入合适的人......由于您实际上并没有尝试使用此解析HTML,因此您可以使用正则表达式执行此操作。如果由于某种原因,content包含</body>,那么它会失败,但除此之外,你有一个足够具体的场景,正则表达式能够做你想做的事情:

var strVal = yourStringValue; //obviously, this line can be omitted - just assign your string to the name strVal or put your string var in the pattern.exec call below 
var pattern = /<body[^>]*>((.|[\n\r])*)<\/body>/im
var array_matches = pattern.exec(strVal);

执行上述操作后,array_matches[1]将保留<body</body>代码之间的任何内容。

答案 1 :(得分:0)

var matched = XMLHttpRequest.responseText.match(/<body[^>]*>([\w|\W]*)<\/body>/im);
alert(matched[1]); 

答案 2 :(得分:-3)

我相信您可以将html文档加载到.net HTMLDocument对象中,然后只需调用HTMLDocument.body.innerHTML吗?

我相信使用更新的XDocumnet还有更简单的方法。

为了回应上面的一些评论,正则表达式不是最好的工具,因为html不是常规语言,并且有一些难以解决的边缘情况。

https://en.wikipedia.org/wiki/Regular_language

享受!