String.replaceAll奇怪的行为

Nig*_*der 13 java regex string

String s = "hi                  hello";
s = s.replaceAll("\\s*", " ");
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)

我有上面的代码,但我无法弄清楚它产生的原因

 h i  h e l l o 
Run Code Online (Sandbox Code Playgroud)

而不是

 hi hello
Run Code Online (Sandbox Code Playgroud)

非常感谢

Roh*_*ain 15

使用+量词来匹配1个或多个空格而不是*: -

s = s.replaceAll("\\s+", " ");
Run Code Online (Sandbox Code Playgroud)

\\s* 表示匹配0个或多个空格,并在每个字符前匹配一个空字符,并用空格替换.

  • +1而不是"之间",我会说"之前",因为它将在第一个字符之前匹配. (2认同)

Jer*_*ten 9

*场比赛0或多个空格,我想你想改变它+来匹配1个或多个空格.