源文:http://chz2002.diandian.com/post/2012-05-24/19803797

java中匹配正则表达式匹配反斜杠要用"////"两个反斜杠就要用"////////"

原因是什么呢?

有一种解释:在java中正则表达式与java中字符处理是分离的。首先比如str.matches("\\\\\"),进行匹配时,先要将"\\\\" 转换成一个字符串"\\"再交给正则表达式,原因:在java中"\\"代表一个"\",四个杠转义后就代表两个"\\",而两个"\\"再最后交给正则 表达式,正则表达式转义一次就刚好匹配一个"\"。

因此在写其它JAVA正则表达式时,可以先正出正则表达式原型,再用JAVA转义字符规则,反转义一次。

 (java中的存在的转义序列值为 “\b、\t、\n、\f、\r、\"、\'、\\”)

 (正则表达式中的元字符:“(、[、{、\、^、-、$、|、}、]、)、?、+、*、+、.”)

如:匹配("ddssssdd")中的".....",则正则表达式原型为 .+\"\w+\".+

又转为java正则表式为 \\\"\\w+\\\"

最后结果为

1
"(\"ddssssdd\")" .matches( ".+\\\"\\w+\\\".+" );