如何使用正则表达式删除其类的整个HTML标记(及其内容)?

前端之家收集整理的这篇文章主要介绍了如何使用正则表达式删除其类的整个HTML标记(及其内容)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对 Regex不是很好,但我正在学习.

我想通过类名删除一些html标签.这是我到目前为止:

<div class="footer".*?>(.*?)</div>

首先 .*?是因为它可能包含其他属性,第二个可能包含其他html内容.

我究竟做错了什么?我试了很多但没有成功.

更新

在DIV内部,它可以包含多行,我正在使用Perl正则表达式.

您还希望在div标记之前允许其他内容
<div[^>]*class="footer"[^>]*>(.*?)</div>

另外,不区分大小写.您可能需要转义引号之类的内容或结束标记中的斜杠.你在做什么背景?

另请注意,使用正则表达式进行HTML解析可能会非常讨厌,具体取决于输入.在下面的答案中提出了一个很好的观点 – 假设你有一个像这样的结构:

<div>
    <div class="footer">
        <div>Hi!</div>
    </div>
</div>

试图为此构建正则表达式是一种灾难.最好的办法是将文档加载到DOM中,然后对其进行操作.

应该紧密映射到XML :: DOM的伪代码

document = //load document
divs = document.getElementsByTagName("div");
for(div in divs) {
    if(div.getAttributes["class"] == "footer") {
        parent = div.getParent();
        for(child in div.getChildren()) {
            // filter attribute types?
            parent.insertBefore(div,child);
        }
        parent.removeChild(div);
    }
}

这是一个perl库,HTML::DOM,另一个是XML::DOM.NET有内置的库来处理dom解析.

猜你在找的正则表达式相关文章