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

正则表达式:匹配[b]与[/b]间内容时,如何忽略中间的内嵌[b]标签

如何用正则表达式忽略标签间的单个内嵌标签

这个问题我之前也碰到过,其实核心就是要精准匹配最外层的[b]到[/b]之间的全部内容,同时跳过中间的内嵌[b]标签。针对你给出的例子,我给你提供一个实用的正则方案,再拆解下原理:

适用的正则表达式

\[b\]((?:(?!\[/b\]).)*)\[/b\]

正则各部分拆解

  • \[b\]:匹配起始的[b]标签,这里对[和]转义是因为它们在正则里属于特殊元字符,必须转义才能匹配字面量。
  • (?:(?!\[/b\]).)*:这是整个正则的核心,属于非捕获组+否定前瞻的组合:
    • (?!\[/b\]):否定前瞻断言,意思是“当前位置的后面不是[/b]标签”
    • .:匹配任意单个字符(如果需要匹配换行符,记得开启对应模式,比如Python里的re.DOTALL,JS里的/s修饰符)
    • *:重复前面的匹配逻辑,直到遇到[/b]为止
  • \[/b\]:匹配结束的[/b]标签,同样转义了特殊字符。

实际测试效果

针对你给出的文本:

[b]some text text some text some [b] text some text [/b]

用这个正则匹配后,捕获到的内容就是:
some text text some text some [b] text some text

完全符合你的需求——既包含了中间的内嵌[b]标签,又精准停在了最外层的[/b]处。

补充说明

如果你的场景里出现了嵌套的闭合标签(比如[b]abc [b]def[/b] ghi[/b]),那正则就不太适合处理这种递归嵌套结构了,这时候更推荐用专门的标签解析器来处理。但针对你当前“忽略单个内嵌[b]标签”的需求,上面的正则完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:33:20