【问题标题】:How to replace character in the string using regex in java?如何在java中使用正则表达式替换字符串中的字符?
【发布时间】:2019-10-21 15:47:18
【问题描述】:

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

输入: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 字符也被替换。我该如何解决这个问题?

【问题讨论】:

    标签: java regex string replace


    【解决方案1】:

    要恢复辅音,在您的正则表达式中使用 零宽度 向后看:

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

    这里(?&lt;=[^aiueo]) 只会在x 之前断言consonant 的存在,但不会匹配它。

    您也可以使用捕获组:

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

    并将其用作:

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

    【讨论】:

    猜你喜欢
    • 2019-12-02
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    相关资源
    最近更新 更多