RegEx在结束ol行之前删除两个空格

时间:2016-08-09 14:13:13

标签: java regex

我希望用每行的一个空格@ end替换2个空格......

String msg =  "ABCD  5320061   \n"+
          "ABCD  5320061   \n";
System.out.println(msg.length());
String a1 = "[  \\s]{2}$";
String a2 = " ";
String x = msg.replaceAll(a1, a2);
System.out.println(x);
System.out.println(x.length());

但输出是:

34
ABCD  5320061   
ABCD  5320061  

33

只有最后一行结束空格被替换为空格

1 个答案:

答案 0 :(得分:1)

  

我希望用每行

的空格替换2个空格

要匹配的结尾,您需要使用Pattern.MULTILINE modifier或其嵌入式(内嵌)版本(?m)

另外,要仅匹配水平空格,您可以使用[^\S\r\n][\p{Zs}\t]

所以,我会选择

String x = msg.replaceAll("(?m)[\\p{Zs}\t]{2}$", a2);

String x = msg.replaceAll("(?m)[^\\S\r\n]{2}$", a2);