我想用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
而是bapanya
。 k
字符也将被替换。我该如何解决? 最佳答案
找回辅音在正则表达式中使用零宽度的后缀为:
String regex = "(?<=[^aiueo])x(?=\\s|$)";
在这里,
(?<=[^aiueo])
将仅断言consonant
在x
之前,但不会与之匹配。或者,您可以使用捕获组:
String regex = "([^aiueo])x(\\s|$)";
并将其用作:
myString = m.replaceAll("$1nya");