

新闻资讯
技术学院本文介绍如何精准匹配常见的 html 块级标签(如 `
`、`
在文本处理中,若需按特定 HTML 标签“切分”字符串,但又要求保留完整的起始-结束标签对(如
此时,正确思路应是 “匹配”而非“分割”:使用 re.finditer() 配合支持反向引用的正则表达式,精准捕获成对出现的开放/闭合标签及其内部内容。
推荐正则模式如下:
import re pattern = r"<(p|li|ul|ol|dl|h1|h2|h3|h4|h5|h6)>[^<]*\1>" subject = 'Some text some text some text.
Another text another text
.
e.DOTALL)]
print(matches)
# 输出:
# ['Some text some text some text.
', # 'Another text another text
', # '✅ 关键解析:
⚠️ 注意事项:
)或嵌套结构(如
from bs4 import BeautifulSoup
soup = BeautifulSoup(subject, 'html.parser')
for tag in soup.find_all(['p', 'li', 'ul', 'ol', 'dl', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']):
print(str(tag)) # 完整保留标签、属性、子节点及格式? 总结:正则适用于可控、扁平、无属性的 HTML 片段提取;而真实 Web 内容解析,请始终优先选用 BeautifulSoup、lxml 或 html.parser 等成熟 DOM 工具——它们健壮、可维护,且能正确处理 HTML 规范中的所有边界情况。