普通字符串中使用
Java中的\
一般用在字符串中,在字符串中其不能单独存在,后面一定要跟个东西。以表示转义,也就是这个东西的另一种意义。
比如在Java中,n
在字符串中就是n
本身的意思,\n
就表示换行;“
用于表示字符串,\"
表示引号本身。(这两个正好反过来了)
Java看见\
号了,后面没东西——不行
Java看见\
号了,后面就转义,还是一个\
,那就表示想要\
本身了。
正则表达式中使用
正则也是写在一个字符串中的,首先当然要遵循Java字符串的语法。别的语言用\
表示一些通用的情况,比如\d
表示数字。
但是Java不行啊:
- 它不像
\n
,没有\d
这么一说 - 它不像
"
,有特殊的含义,d
就是字符d
所以Java中\d
首先就不符合字符串的语法,那还谈什么正则表达式,因为正则表达也就是一个字符串,用来匹配罢了。别的语言中\
就是\
本身,而Java想表示\
本身只能先转义。所以别的语言中的\d
,在Java中是\\d
。
Java看见第一个\
,好的后面我给你转义,\\
就转成了\
,\\d
也就成了\d
。发现后面是d
,那就是正则了。
再看这个\\\\
。
Java看见第一个\
,好,后面我给你转义,\\
转成了\
,后面还有个\
,好,我还给你转义,后面\\
变成了\
。那不就是别的语言中的\\
吗?
Java中除非\
自己是被转义的那个,否则后面一定要跟个东西,表示把这东西转义,这东西也要能被转义才行。