正则表达式替换 : only replace the first occurance from a "or" condition

标签 regex pcre substitution

我需要将 \d+a+ 替换为 x ,我想将所有 \d+ 替换为 x ,但对于 a+ ,我只想替换第一次出现的情况(如果有的话)。

是否可以仅使用一个正则表达式来实现这一目标?

<表类=“s-表”> <标题> 输入 所需输出 <正文> 123,456,789 x,x,x 123,456,a,789 x,x,x,x aaa,aa,aaa x,aa,aaa aa,123,456,aaaa,789 x,x,x,aaaa,x aaa,123,456,aa,789,aaaa x,x,x,aa,x,aaaa

This 肯定不起作用:

/\d+|a+/gm

我正在使用 PCRE 正则表达式引擎,或者是否有任何模式修饰符或控制动词可以做到这一点?提前致谢。

最佳答案

抱歉,我忘记了答案必须先放在一边并在评论中发布。

现在是:

正则表达式:\d+|((?<!a|(?!(?1)).))a+

替换:x

https://regex101.com/r/v24o7B/1

关于正则表达式替换 : only replace the first occurance from a "or" condition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65934161/

相关文章:

Python 正则表达式 : get everything except for string

python - 我需要找到文件中某个短语的所有实例,然后打印该短语后下一个单词的排序列表

regex - 如何将此 Perl5/PCRE 转换为 Perl 6 正则表达式?

regex - 是否可以在正则表达式的替换中重复捕获的组?

svn - 配置 Mercurial 关键字扩展以生成 Subversion 关键字

python - 如何使用 re.sub 基于模式字典替换文本的某些部分并替换 python 中的值?

regex - 用空格搜索和替换多行文本

javascript - 正则表达式在字符串中的时间后提取句号/句点

Php preg_match_all 只匹配最后一个元素

pcre - 在 AIX 6.1 64 位上编译 pcre 8.32