どのようにJavaで正規表現を使用して文字列内の文字を置換するには?

ルディCahyanto:

私はすべてを交換するx以外のすべての文字列または文字列の末尾にし、後ろaiueonya入力と出力を期待:

入力: bapakx

出力: bapaknya

私はこの1つを試してみました:

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文字も置き換えられます。私はこれをどのように解決することができますか?

anubhava:

子音バックの使用取得するには幅がゼロとしてあなたの正規表現で後読みを:

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

ここで(?<=[^aiueo])意志だけの存在アサートconsonantする前にx、それとは一致しません。

別の方法としては、キャプチャグループを使用することができます。

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

それを使用します:

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=336135&siteId=1
おすすめ