Bal*_*ala 1 java regex replace
我想替换匹配模式的子字符串,只要它与不同的模式不匹配.例如,在下面显示的代码中,我想替换所有'%s'但保持':%s'不变.
String template1 = "Hello:%s";
String template2 = "Hello%s";
String regex = "[%s&&^[:%s]]";
String str = template1.replaceAll(regex, "");
System.out.println(str);
str = template2.replaceAll(regex, "");
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
输出应该是:
Hello:%s
Hello
Run Code Online (Sandbox Code Playgroud)
我在我的正则表达式中遗漏了一些东西.有线索吗?谢谢!
使用负面的lookbehind来实现您的目标:
String regex = "(?<!:)%s";
Run Code Online (Sandbox Code Playgroud)
%s只有:在它之前没有权利时才匹配.