在我读过的所有教程中,他们总是说\ s匹配一个空格。那么为什么这个指令
System.out.println("line1 \n line2".replaceAll("\\s\\s*", " "));
有这个输出:
line1 line2
感谢您的回复。
答案 0 :(得分:5)
字符串文字"\\s\\s*"
等同于regular expression syntax \s\s*
,它匹配“空白字符后跟零个或多个空白字符”。
空白字符定义为[ \t\n\x0B\f\r]
,其中包含空格和换行符。
答案 1 :(得分:3)
\\s
匹配空白字符,其中空格字符为 - [ \t\n\x0B\f\r]
。这不仅仅是一个空间。我怀疑这是你从空白推断出来的。请参阅Pattern
课程文档。
此外,您可以仅使用\\s\\s*
替换正则表达式\\s+
。
答案 2 :(得分:2)
"\\s\\s*"
是\s\s*
的转义版本,与\s+
它匹配一个或多个任何空白字符。白空间字符为[ \t\n\x0B\f\r]
。因此,它将在每场比赛中仅用一个替换多个空格。
答案 3 :(得分:1)
首先,这个正则表达式有点傻:\\s\\s*
将匹配一个或多个空格字符,因为\\s
字符类匹配所有空格。
但是,它可以更容易表达为\\s+
,它可以完成同样的事情。