【问题标题】:Globally replace all hyphens after some 'Divider'在某些“分隔符”之后全局替换所有连字符
【发布时间】:2021-09-14 22:53:35
【问题描述】:

向专家问好,我正在寻找 PCRE 匹配/替换来执行以下操作...
a-b-分隔符-Any-Text ----> a-b-分隔符__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.*)/g
但将其更改为负前瞻也会匹配没有分隔符的文本。

我能否在全局匹配所有剩余连字符的同时验证“分隔符”??

【问题讨论】:

    标签: regex regex-lookarounds


    【解决方案1】:

    你可以使用

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

    请参阅regex demo详情

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

    【讨论】:

    • 百万感谢!我什至不知道 \G、\A 或 \K,所以很高兴知道我还有很多东西要学。等不及要开始实践它们了。现在我需要的是一些更好的 PCRE 兼容应用程序。再次感谢!
    • @evangeline531 In this YT video of mine,您可以找到更多\G\K 用法示例。 \A 这里基本上就是^,匹配字符串的开始位置。
    猜你喜欢
    • 1970-01-01
    • 2017-08-30
    • 2012-06-17
    • 1970-01-01
    • 2020-06-09
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多