正则表达式 - 如何使用相同的捕获组捕获字符串及其子字符串

问题描述 投票:0回答:0

我遇到了一个与正则表达式标准有关的令人费解的问题。

我有一个这样的字符串数组:

String s[] = {"johnzpatrickzdoe","janezmaryzrendoe","philipzrobertzwillow"};

当我尝试用“johnzpatrickzdoe”和“janezmaryzrendoe”字符串中的“q”替换第一个“z”时 只有一个改变是积极的:

约翰qpatrickzdoe<-- desired substitution

janezmaryqrendoe<-- undesired substitution

philipzrobertzwillow

for (int i=0; i < s.length; i++) 
System.out.println(s[i].replaceAll("([a-z]+)z([a-z]+)(doe|rendoe)$", "$1q$2$3"));

尽管第三个捕获组中的顺序是:(rendoe|doe) 或 (doe|rendoe),但上面的 RegEx 不起作用。

我期待

约翰qpatrickzdoe

qmaryzrendoe

你能帮帮我吗?我真的很感激。

regex regex-group
© www.soinside.com 2019 - 2024. All rights reserved.