什么\在Java中匹配

时间:2014-02-13 18:23:04

标签: java regex

在我读过的所有教程中,他们总是说\ s匹配一个空格。那么为什么这个指令

System.out.println("line1   \n   line2".replaceAll("\\s\\s*", " ")); 

有这个输出:

line1 line2 

感谢您的回复。

4 个答案:

答案 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+,它可以完成同样的事情。