0

0

如何使用正则表达式匹配并保留指定 HTML 标签及其完整内容(而非简单分割)

聖光之護

聖光之護

发布时间:2026-01-08 14:26:01

|

779人浏览过

|

来源于php中文网

原创

如何使用正则表达式匹配并保留指定 HTML 标签及其完整内容(而非简单分割)

本文介绍如何精准匹配常见的 html 块级标签(如 `

`、`

  • `、`
      ` 等)及其闭合结构,确保标签对完整保留在结果中,避免破坏语义;强调 `re.finditer` + 捕获组 + 反向引用的正确用法,并指出正则处理 html 的局限性。

      在文本处理中,若需按特定 HTML 标签“切分”字符串,但又要求保留完整的起始-结束标签对(如

    • )且不丢失嵌套结构或标签本身,直接使用 re.split() 会将分隔符(即标签)剥离,导致结果中缺失关键标记——这正是原始需求的根本痛点。

      此时,正确思路应是 “匹配”而非“分割”:使用 re.finditer() 配合支持反向引用的正则表达式,精准捕获成对出现的开放/闭合标签及其内部内容。

      推荐正则模式如下:

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

      Some text some text some text.

      立即学习前端免费学习笔记(深入)”;

      Another text another text

      Text-To-Pokemon口袋妖怪
      Text-To-Pokemon口袋妖怪

      输入文本生成自己的Pokemon,还有各种选项来定制自己的口袋妖怪

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

      Some text some text some text.

      立即学习前端免费学习笔记(深入)”;

      ', # '

      Another text another text

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

      ✅ 关键解析:

      • (p|li|ul|ol|dl|h1|...h6) —— 捕获标签名到第一组;
      • \1> —— 精确匹配对应闭合标签(如
      • ),杜绝
      • ...
      类错配;
  • [^
  • re.DOTALL —— 使 . 可匹配换行符,提升多行内容兼容性。
  • ⚠️ 注意事项:

    • 此方案不支持标签属性(如

      )或嵌套结构(如

      • text
      • nested
      ),因 [^
    • 若需处理真实 HTML(含属性、注释、自闭合标签、JS/CSS 内容等),务必改用专业 DOM 解析器,例如:
      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 规范中的所有边界情况。

    相关文章

    HTML速学教程(入门课程)
    HTML速学教程(入门课程)

    HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

    下载

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    css
    css

    css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    509

    2023.06.15

    css居中
    css居中

    css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

    262

    2023.07.27

    css如何插入图片
    css如何插入图片

    cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

    748

    2023.07.28

    css超出显示...
    css超出显示...

    在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

    536

    2023.08.01

    css字体颜色
    css字体颜色

    CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

    757

    2023.08.10

    什么是css
    什么是css

    CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

    603

    2023.08.10

    css三角形怎么写
    css三角形怎么写

    CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

    559

    2023.08.21

    css设置文字颜色
    css设置文字颜色

    CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

    388

    2023.08.22

    c++主流开发框架汇总
    c++主流开发框架汇总

    本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

    24

    2026.01.09

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Sass 教程
    Sass 教程

    共14课时 | 0.7万人学习

    Bootstrap 5教程
    Bootstrap 5教程

    共46课时 | 2.8万人学习

    CSS教程
    CSS教程

    共754课时 | 18.3万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号