Как заменить символ в строке с помощью регулярных выражений в Java? - PullRequest
1 голос
/ 21 октября 2019

Я хочу заменить каждые 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 также заменяется. Как я могу решить это?

1 Ответ

4 голосов
/ 21 октября 2019

Чтобы получить согласную обратно Используйте нулевую ширину lookbehind в вашем регулярном выражении как:

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

Здесь (?<=[^aiueo]) будет только утверждать присутствие consonant до x, но выиграноне соответствует.

В качестве альтернативы вы можете использовать группы захвата:

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

и использовать его как:

myString = m.replaceAll("$1nya");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...