1

我想替换与模式匹配的子字符串,前提是它不匹配不同的模式。例如,在下面显示的代码中,我想替换所有 '%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);

输出应该是:

Hello:%s
Hello

我在我的正则表达式中遗漏了一些东西。有什么线索吗?谢谢!

4

1 回答 1

7

使用消极的回顾来实现您的目标:

String regex = "(?<!:)%s";

%s只有在它前面没有:右边时它才匹配。

于 2013-07-30T22:54:45.453 回答