我对
Regex不是很好,但我正在学习.
<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); } }