我遇到了一个与正则表达式标准有关的令人费解的问题。
我有一个这样的字符串数组:
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
你能帮帮我吗?我真的很感激。