java中单双斜杠的使用
java的正则表达式和其他的正则表达式不同,在一般的正则表达式中,我们会看到一些诸如d, ,D等字符,这些字符是用来匹配字符串的,比如我们可以用Pattern类的matches方法来匹配:
可见,regex是正则表达式,input是输入的字符串,输出的结果为true:
注意到我们输入的正则表达式中出现了\d字符,这个字符就表示正则表达式中的d,意思是匹配0-9的数字。
但是当我们改成d时,出现了静态检查错误:
检查表示出现了非法的转义字符。原来java把d当成了一个转义字符,而不是正则表达式的字符!
所以当字符串中出现了单斜杠加一个字符时,表示为转义字符,如 , 等等。而当我们要用java的正则表达式中的字符时,要使用到诸如d,D,B等字符,必须用双斜杠。
在其他语言中,\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。
在 Java 中,\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
所以关于正则表达式中的反斜杠,它的作用是将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如, n匹配字符 n。 匹配换行符。序列 \\ 匹配 \ ,\( 匹配 (。
简单理解为,java中的\代表其他语言的。
需要注意一点:
java可以\\匹配\,但是不可以\匹配!因为java不允许单个反斜杠的输入!
如图,试图\匹配会报错的:
\\匹配\则没有问题:
