贝利信息

如何使用正则表达式精准提取并保留成对 HTML 标签及其内容

日期:2026-01-08 00:00 / 作者:聖光之護

本文介绍如何通过正则表达式匹配而非分割,准确提取包含起始与结束标签的完整 html 片段(如 `

  • ...
  • `、``),确保标签结构完整、内容不被截断,并说明其适用边界与专业替代方案。

    在处理 HTML 片段时,若目标是按特定成对标记(如

  • ...
    • ...

    ...

    等)切分字符串并保留完整标签结构
    ,直接使用 re.split() 会破坏标签配对关系——它仅在标签处断开,导致起始/结束标签被分离,内容错位。正确做法是改用 re.finditer() 进行匹配(match),主动捕获“开–闭”成对出现的完整标签块。

    核心正则表达式如下:

    import re
    
    pattern = r"<(p|li|ul|ol|dl|h1|h2|h3|h4|h5|h6)>[^<]*"
    subject = '

    Some text some text.

    Another text

    .
  • some list
  • .
      another list
    ' matches = [match.group(0) for match in re.finditer(pattern, subject, re.DOTALL)] print(matches) # 输出: # ['

    Some text some text.

    ', '

    Another text

    ', '
  • some list
  • ', '
      another list
    ']

    关键设计解析:

    ⚠️ 重要限制与注意事项: