正则表达式中\和java中的\都表示转义,转义字符配合普通字符使用会使之拥有特殊含义,比如\d,\w,\n,\r ,那么问题来了,想打出 \ 应该怎么办? 应该用 \\ 。
应用正则表达式的场景-->
例如: . 在正则表达式中表示通配符,System.out.println("hello".matches("^.ello$"));
但是当我只想匹配 .ello 的时候正则表达式应该用 ^\\.ello$ ,
1、首先明白,\n表示回车,\\n 表示字母n 的应用场景是在字符串中,也就是System.out.print("1122\n2233"),在字符串外\n是没有含义的。
2、回到正题,从左向右,第二个 \ 是java字符串的,组成的 \. 是没有含义的,所以会报错 ;再加 \ 个人认为会造成两种结果,一种是将第二个 \ 转义为单纯的反斜杠,即最终结果是反斜杠加通配符号 . ; 另一种是将第二个 \ 转义为正则表达式中的转义符,即最终结果是正则表达式 \. 。第二种结果优先。
验证: 匹配6-12位的QQ号 --> System.out.println("16619965604".matches("^[1-9]\\d{5,11}$")) ,
上面中 \d 在字符串中是没有含义的,所以报错,要再加转义字符,最后得到正则表达式 \d 。