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

如何用正则表达式匹配指定的HTML分组代码?

正则匹配HTML中指定div及其对应闭合标签的解决方法

你的正则/<div class="def">(.*)</div>/isU之所以无法匹配到目标</div>,是因为U修饰符开启了非贪婪模式,会在遇到第一个</div>就停止匹配——也就是匹配到了内层jkl的闭合标签,而非def对应的那个。

针对你的HTML结构,这里提供两种可行的正则方案:

方案1:利用平衡组处理嵌套结构(推荐,适配复杂嵌套场景)

适用于def内部有多层嵌套div的情况,能精准匹配到对应def的闭合标签:

/<div class="def">((?:(?!<div class="def">|<\/div>).|(?R))*)<\/div>/is
  • 逻辑说明:
    • <div class="def"> 精准匹配目标开标签
    • (?:(?!<div class="def">|<\/div>).|(?R))*:要么匹配任意非def开/闭合标签的字符,要么递归匹配整个模式(处理内层嵌套的div结构)
    • <\/div> 匹配def对应的闭合标签

方案2:利用正向断言定位倒数第二个</div>

如果你的HTML结构固定(def的闭合标签就是倒数第二个</div>),可以用正向断言快速定位:

/<div class="def">(.*?)<\/div>(?=\s*<\/div>)/is
  • 逻辑说明:
    • .*? 非贪婪匹配内层内容
    • (?=\s*<\/div>) 正向断言确保当前匹配的</div>后面跟着空白字符和最后一个</div>,从而锁定倒数第二个目标标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:07:30