转载请注明出处:http://blog.csdn.net/yudbl/article/details/78285827
正则表达式反斜杠为何四个斜杠?下面是我的理解:
// String fileNameBack = "data\2012\09\18\20120918.txt";
String fileNameBack = "data\\2012\\09\\18\\20120918.txt";
// String fnb = fileNameBack.replace("\\\\","\\\\");
// System.out.println(fnb);
String[] temps = fileNameBack.split("\\\\");
System.out.println(temps[temps.length-1]);
//说明
//(1)
//反斜杠在配置文件路径时,由于它本身在java中有特殊意义,
//作为转义符而存在,如“\n”(换行)等.
//(2)
//字符串中具体意义上的反斜杠要两个
//也就是第一个反斜杠是作为转义符存在的,第二个才是真正意义上的反斜杠,
//所以在字符串中要表示字符’\’要用“\\”来表示
//例如:这样定义一个字符串路径 String pathStr= "data\20120918.txt"; 是错误的,
//要这样定义String pathStr= "data\\20120918.txt";
//(3)
//正则表达式匹配一个反斜杠,需要四个反斜杠"\\\\"
//在字符串中,两个反斜杠被解释为一个反斜杠,
//然后在作为正则表达式, \\ 则被正则表达式引擎解释为 \,所以在正则表达式中需要使用四个反斜杠。
//也就是说,前两个反斜杠在字符串中被解释为一个反斜杠,后两个也被解释为一个反斜杠,
//这时解释完毕后变成两个反斜杠,再由正则表达式解释两个反斜杠,就又解释成了一个反斜杠,
//所以,在正则表达式中要匹配一个反斜杠时,需要四个反斜杠。
//如:上面要匹配点号时,
//需要在点号之前加上两个反斜杠,否则将被正则表达式当作一个点号,
//一个点号在正则表达式中表示匹配任意字符了。