我有三个字符串 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
但是我认为有人可以提出建议吗?
答案 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");
}