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

如何用正则匹配{c}{/c}分隔符内的所有<br>标签?

解决{c}与{/c}块内所有
标签的匹配替换问题

你的问题在于原正则是把整个{c}到{/c}的块作为一个匹配单元,只捕获其中第一个<br>(转义后是&lt;br&gt;),自然无法处理块内的多个目标标签。要匹配每个块里的所有<br>,我们需要调整正则逻辑,定位到每个处于{c}和{/c}之间的目标标签,而不是匹配整个块。

解决方案正则

使用带环视(lookaround)的正则来限定匹配范围,确保只捕获{c}与{/c}之间的每一个&lt;br&gt;:

(?<={c}(?:(?!{c}|{/c}).)*)(&lt;br&gt;)(?=(?:(?!{c}|{/c}).)*{/c})

配合修饰符:g(全局匹配)+ s(让.匹配换行符,支持跨行块)

正则工作原理拆解

  • (?<={c}(?:(?!{c}|{/c}).)*):反向正向预查,确保当前位置的前面存在{c},并且从{c}到当前位置的中间没有出现其他的{c}或{/c}——这能避免跨块匹配,比如不会把前一个块外的内容算进来。
  • (&lt;br&gt;):捕获我们需要替换的目标标签,替换时可以直接引用这个捕获组(比如用$1或\1,具体取决于使用的工具/语言)。
  • (?=(?:(?!{c}|{/c}).)*{/c}):正向预查,确保当前位置的后面会出现{/c},且中间没有其他的{c}或{/c}——保证我们只在闭合的块内匹配。

替换示例

如果要把这些<br>替换成空字符串(即删除),在支持正则替换的工具/语言中,直接执行全局替换即可,每个匹配都是独立的&lt;br&gt;,全局修饰符会遍历所有符合条件的标签。

注意事项

如果你的文本中存在嵌套的{c}{/c}块,这个正则可能会失效(因为环视无法处理嵌套结构)。但从你的测试场景来看没有嵌套需求,这个正则完全能满足要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:20:58