You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用高效PCRE表达式匹配多行中多相似惰性量词间的上下文?

高效PCRE正则方案(处理嵌套标签的多行内容提取)

针对你需要提取外层<div>与</div>之间所有内容(含嵌套<div>)的需求,推荐使用递归匹配的PCRE正则,它能精准处理嵌套结构,避免惰性匹配提前终止的问题,且在多行场景下效率更高。

最终正则表达式

/(?s)<div>\s*((?:(?!<div>|<\/div>).|<div>(?1)<\/div>)*)\s*<\/div>/

规则解释

  • (?s):开启DOTALL模式,让.可以匹配换行符,适配多行场景
  • <div>\s*:匹配外层起始标签及后续空白(含换行)
  • 核心捕获组((?:(?!<div>|<\/div>).|<div>(?1)<\/div>)*):
    • (?!<div>|<\/div>).:匹配任意非<div>/</div>开头的字符,处理普通文本内容
    • <div>(?1)<\/div>:递归调用捕获组1的规则,匹配嵌套的<div>结构,支持任意深度的嵌套
    • *:重复匹配上述两种情况,覆盖外层标签内的所有内容
  • \s*<\/div>:匹配外层结束标签及前面的空白(含换行)

为什么你的尝试不生效

  • 基础表达式/(&lt;div&gt;)(.*?)(&lt;/div&gt;)/:惰性匹配.*?会在遇到第一个</div>时立即终止,只能提取到第一个嵌套<div>之前的内容,无法覆盖后续内容
  • 非捕获组表达式/(&lt;div&gt;)((?:&lt;div&gt;.*?&lt;/div&gt;).*?)(&lt;/div&gt;)/:仅能匹配单个嵌套<div>的场景,无法处理多个嵌套或更深层级的结构

使用说明

在PCRE兼容的工具/代码中,该正则的捕获组1即为你需要的期望结果,直接提取即可。

内容的提问来源于stack exchange,提问作者Michael Mikhjian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 08:37:08