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

如何使用PCRE正则全局替换<i>Divider</i>标签之后的所有连字符

PCRE正则匹配替换解决方案

可用匹配模式

全局匹配模式如下:
/(?:<i>Divider<\/i>|\G(?!^))[^-]*\K-/g
替换目标为 __ 即可。

模式说明

  • (?:<i>Divider<\/i>|\G(?!^)):定位匹配起点,要么匹配到<i>Divider</i>标签,要么从上一次匹配结束的位置继续匹配,(?!^)避免了字符串开头无Divider时的误匹配
  • [^-]*:匹配两个连字符之间的所有非连字符内容,不纳入最终替换范围
  • \K:重置匹配结果,丢弃之前匹配的所有内容,仅将后续的-作为最终匹配项
  • g:全局匹配标志,替换所有符合条件的连字符

效果验证

输入a-b-<i>Divider</i>-Any-Text → 输出a-b-<i>Divider</i>__Any__Text
输入a-b-c-<i>Divider</i>-w-x-y-z → 输出a-b-c-<i>Divider</i>__w__x__y__z
输入无Divider的文本a-b-c-d-e-f-g-h-i-j → 无匹配,不做任何替换

常见错误说明

你之前尝试的负向前瞻写法-(?!.*Divider)会误匹配无Divider的文本,原因是没有Divider的场景下所有连字符都满足「后面没有Divider」的条件,自然会全量误替换。本方案通过\G锚点强制所有匹配必须从Divider的位置向后延续,没有Divider时不会触发任何匹配,完全规避了该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:36:03