除了一个案例,使用正则表达式替换特定单词

时间:2017-02-18 12:40:21

标签: java regex

我有三个字符串 app,app_abc,appabc 我想用代码替换任何字符串(用于替换)输出应

  
      
  • app - >代码,
  •   
  • app_abc - > code_abc,
  •   
  • appabc - > appabc
  •   

我试过这个 replaceAll(" ^ app",代码); 但它将从应用程序

更换

输出错误

  
      
  • app - >代码,
  •   
  • app_abc - > code_abc,
  •   
  • appabc - > codeabc(我希望使用正则表达式排除这种类型的字符串)
  •   

我知道我必须使用或者是oprator  所以我试过这个

replaceAll("^app|app_(?!(.*))", code);

https://regex101.com/r/Ils9kM/1

但是我认为有人可以提出建议吗?

2 个答案:

答案 0 :(得分:2)

您希望仅在单词的开头替换abc,并且仅在未跟随另一个字母时替换replaceAll("\\bapp(?![a-zA-Z])", "code") 。使用

abc

如果您希望"\\bapp(?=\\b|_)" 后跟单词边界或下划线,则该模式也可以

object hw {
  def main(args: Array[String]): Unit = {
    println("hihi")
  }
}

答案 1 :(得分:0)

试试这个:

public static void main(String []args){
        Assert.assertEquals("code", repl("app"));
        Assert.assertEquals("code_abc",repl("app_abc"));
        Assert.assertEquals("appabc",repl("appabc"));
        Assert.assertEquals("appa_bc",repl("appa_bc"));
        Assert.assertEquals("fooapp",repl("fooapp"));
        Assert.assertEquals("foo_app",repl("foo_app"));
        System.out.println("All Good");
    }

    private static String repl(final String str) {
        return str.replaceAll("\\bapp(?![a-zA-Z])", "code");
    }