【发布时间】:2018-09-20 01:11:53
【问题描述】:
我知道其中一个正则表达式是“\s+”,它表示一个或多个空格。但在我看到的许多参考文献中,
为什么他们使用双反斜杠“\\s+”而不是一个反斜杠“\s+”?
例如,我在 stackoverflow 中得到的这段代码:
import java.math.*;
import java.util.*;
import static java.util.Arrays.*;
import static java.lang.Math.*;
public class Initials {
public String getInitials(String s) {
String r = "";
for(String t:s.split("\\s+")){
r += t.charAt(0);
}
return r;
}
void p(Object... o) {
System.out.println(deepToString(o));
}
}
这段代码的输出是:
示例输入:“john fitzgerald kennedy”
返回:“jfk”
【问题讨论】:
-
您必须在双引号 Java
String文字中键入两个反斜杠,才能在字符串中包含一个反斜杠字符。反斜杠后跟其他任何东西都意味着一些特别的东西。 -
哦,
"\s+"和"\\s+"之间的区别在于"\\s+"为您提供了一个字符串,其中包含您想要的反斜杠正则表达式,后跟一个s,后跟一个加号,而"\s+"导致编译错误,因为\s不是有效的 Java 字符串转义序列。
标签: java regex whitespace metacharacters