日期:2014-05-20  浏览次数:20666 次

很不解,这样写也能编译通过?
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;



public class test {
public static void main(String args[]){
File file = new File("d:\\\\\\\\TEMP.txt");
System.out.println(file.getPath());
}
}

这里用了8个“\”也能编译通过,正常的正则不是2个“\”就够了么?这样写没有错么?

另外麻烦问下,正则是只有在“”中用么?所有的浏览器都支持正则么?有没有不支持的?谢谢!

------解决方案--------------------
貌似正则主流的浏览器都支持吧!
------解决方案--------------------
 如果是奇数个\的话  会是这样的d:\ emp.text
如果是偶数个\的话  才会是这样d:\emp.text

------解决方案--------------------
首先,这跟正则没啥关系吧。
"\"的作用是转义,当编译器解析后发现有"\"后面跟着一个无法转义的字符时就会报错。
------解决方案--------------------
这个和浏览器解析转义字符规则有关。

在java项目中 不支持多个/ 以及 路径的大小写,除非重构拦截器。。
但是。net项目中 支持多个/ 以及 路径大小写、、
------解决方案--------------------
有部分\\理解成了转义字符,我记得解析json字符串时,json字符串好像不允许出现\\,要用\\必须得用转移字符,这样写就ok。
------解决方案--------------------
引用:
Quote: 引用:

首先,这跟正则没啥关系吧。
"\"的作用是转义,当编译器解析后发现有"\"后面跟着一个无法转义的字符时就会报错。

转义是把它转成ASCII值么?

你说的是存储层面的问题了。最后按ASCII存还是UTF-8,UTF-16或其他编码方式存看实际情况。
字符串中有一些特殊字符,比如最常见的"引号,假如你想要存一个有引号的字符串,如"louzhu"weiwu",这时编译就会把第二个引号当成字符串结束符,从而导致剩下的部分编译错误,这时就需要转义字符告诉编译器第二个是字符串的一部分,而不是结束字符:"louzhu\"weiwu",这样就能正确解析了。
回到问题,当编译器发现\后面跟一个不需要转义的字符时就会发生编译错误。
楼主明白了吧?