匹配关闭HTML标签的正则表达式
我正在写一个小的Python脚本,用来清理HTML文档。这个脚本的工作原理是接受一个要保留的标签列表,然后在HTML代码中查找并删除那些不在列表里的标签。我一直在用正则表达式来实现这个功能,已经能匹配开标签和自闭合标签,但就是无法匹配闭合标签。
我在尝试的匹配闭合标签的模式是 </(?!a)>
。这个看起来很合理,但为什么不管用呢?这个 (?!a)
应该能匹配任何不是锚标签的东西(这里的 "a" 只是个例子,可以是任何东西)。
编辑:真是烦人!我想正则表达式没有显示出来!
4 个回答
4
不要用正则表达式来解析HTML,这样只会让你头疼。
建议使用XML解析器。可以试试BeautifulSoup或者lxml。
13
<TAG\b[^>]*>(.*?)</TAG>
匹配特定HTML标签的开始和结束部分。
<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>
会匹配任何HTML标签的开始和结束部分。
可以查看 这里。
21
阅读:
忏悔。
使用一个真正的HTML解析器,比如BeautifulSoup。