转载请注明出处: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) //正则表达式匹配一个反斜杠,需要四个反斜杠"\\\\" //在字符串中,两个反斜杠被解释为一个反斜杠, //然后在作为正则表达式, \\ 则被正则表达式引擎解释为 \,所以在正则表达式中需要使用四个反斜杠。 //也就是说,前两个反斜杠在字符串中被解释为一个反斜杠,后两个也被解释为一个反斜杠, //这时解释完毕后变成两个反斜杠,再由正则表达式解释两个反斜杠,就又解释成了一个反斜杠, //所以,在正则表达式中要匹配一个反斜杠时,需要四个反斜杠。 //如:上面要匹配点号时, //需要在点号之前加上两个反斜杠,否则将被正则表达式当作一个点号, //一个点号在正则表达式中表示匹配任意字符了。