我想用x替换行或字符串末尾以及除aiueo以外的每个字母后面的每个nya
预期的输入和输出:

输入:bapakx

输出:bapaknya

我已经尝试过这个了:

String myString = "bapakx";
String regex = "[^aiueo]x(\\s|$)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(myString);
if(m.find()){
    myString = m.replaceAll("nya");
}


但是输出不是bapaknya而是bapanyak字符也将被替换。我该如何解决?

最佳答案

找回辅音在正则表达式中使用零宽度的后缀为:

String regex = "(?<=[^aiueo])x(?=\\s|$)";


在这里,(?<=[^aiueo])将仅断言consonantx之前,但不会与之匹配。

或者,您可以使用捕获组:

String regex = "([^aiueo])x(\\s|$)";


并将其用作:

myString = m.replaceAll("$1nya");

10-06 12:37