在 'Divider' 之后全局替换所有连字符

Globally replace all hyphens after some 'Divider'

向专家问好,我正在寻找 PCRE match/replace 来执行以下操作...
a-b-Divider-Any-Text ----> a-b-Divider__Any__Text
a-b-c-分频器-w-x-y-z ---> a-b-c-分频器__w__x__y__z
a-b-c-d-e-f-g-h-i-j ------> a-b-c-d-e-f-g-h-i-j (没有替换,因为没有 Divider

所以基本上,我只是想全局替换 分隔符后的所有连字符。
如果在分隔符 之前替换连字符 ,我只使用类似 -(?=.*Divider.*)/g
的东西 但是将其更改为负先行也匹配文本 without the Divider.

我能否以某种方式在全局匹配所有剩余连字符的同时验证 'Divider'?

你可以使用

(?:\G(?!\A)|Divider)[^-]*\K-

参见regex demo详情:

  • (?:\G(?!\A)|Divider) - 前一场比赛结束或 Divider
  • [^-]* - -
  • 以外的零个或多个字符
  • \K - 丢弃到目前为止匹配的文本的匹配重置运算符
  • - - 一个连字符。