正则表达式用一个替换多个字符

时间:2011-11-25 03:02:52

标签: java regex-negation

假设我有一个这样的字符串:

"abc%\%%%%"

我想用一个%%%替换多个%。我试过像

这样的东西

String st = "abc%\%%%%".replaceAll("(%)\\1+", "$1");

但这也会将"\%%"变成"\%",这不是我想要的。换句话说,我想要替换多个%,但留下前面带有反斜杠的那些。

我应该使用什么样的正则表达式? 感谢

2 个答案:

答案 0 :(得分:2)

尝试,

String st = "abc%\\%%%%".replaceAll("([%])+","$1");
       st = "Not%%%%\\%%%%sure but%%%\\%%%%%try out".replaceAll("(\\\\)([%])+","$1$2");

答案 1 :(得分:0)

试试这个

String st = "abc%\\%%%%";
String regex = "([\\\\]%)%+";
String result= st.replaceAll(regex,"\\\\%%");

结果是abc%\ %%

如果要检查正确性,可以使用此声明

 String result= st.replaceAll(regex,"\\\\%R");

结果是abc%\%R(这证实了前面有反冲的%是单独的。)