学习正则表达式的时候对\不是很理解,后来查询资料后讲一下我的看法。
拿\d来说,它表示一个一个数字,但是怎么用呢?
System.out.println("a".matches("\\d"));//false
System.out.println("a".matches("\\."));//false
System.out.println("a".matches("."));//true
System.out.println("\d");
我们一般在正则表达式中是需要用"\\d"的,为什么?因为\是转义字符,直接用\d,代表着是将字符d转义为其他意思,但d没有其他意思,那么就会报错。
所以当我们需要用到\d这一完整的预定义功能的字符时,就需要先将前面的转义字符\先转义为普通的字符\,再加上d形成\\d才是我们需要的\d。
这样说可能比较抽象,我换总说法,就是\d是一个完整的字符,一个我们在正则表达式中用来判断是否是一个数字的字符,但是你直接写\d代表着不是我们需要的那个字符,而是表示将d转义的一个字符,你需要先将\转义,也就是说\\,才代表一个\,然后再加上d,才表示为/d。
算了,感觉还是不是很清晰,用不等式吧。
但是 . 比较特殊,在正则表达式中,\.
表示匹配点字符 .
本身。这里面的 \ 是没有转义意义的\,所以当我们想表示 . 的时候,首先先把 \ 转义了,用\\表示符号\,符号\加上.也就是\.这样的一个符号才能表示 . 。所以输入要\\. 。
当然,也可以用另一种方式表示符号.
System.out.println(".".matches("[.]"));//true
不等式如下:
System.out.println("a".matches("."));//true
System.out.println("\\".matches("\\."));//false
System.out.println(".".matches("\\."));//true
System.out.println("\\.");//\.
//在正则表达式中,符号.为\.表示,也就是在正则表达式中,"."="\."
//其中符号"\."中的\是要符号要无转义作用的符号,所以此时我们需要用\先转义\
//也就是说 "\\."="\(无转义作用的符号\)."
//此时正则表达式会将"\(无转义作用的符号\)."识别为符号"."
/*也就是说当我们输入//.的时候,首先转义字符\先将第二个转义字符给转义为字符\
然后再加上符号.形成了符号"\.",此时正则表达式将符号"\."识别为符号"."
*/
以下是部分正则表达式: