匹配关闭HTML标签的正则表达式

8 投票
4 回答
48540 浏览
提问于 2025-04-16 03:02

我正在写一个小的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标签的开始和结束部分。

可以查看 这里

撰写回答