正则表达式的转义和反义,一字之差,概念却是完全不同的。
1.转义
转义就是使用正则表达式中的一些特殊字符引起歧义的时候,用“\”取消原本的特殊意思,比如如果想匹配*或者?,因为正则表达式里*和?都是元字符,有着特殊的意义,所以如果想匹配这两个字符,需要用\*,\?。又或者匹配常见的url网址,“.”本身有着其特殊的意义,所以这时也需要进行转义\.。
那么是不是当出现特殊字符时,都需要进行转义呢?
比如这个元字符出现在字符组里,例如[abc(*?{}],其中(,*,{}需要进行转义吗?
答案是不需要,因为尽管他们有着特殊意义,但是在字符组里没有特殊的意义。那如果在分支里呢?比如(ab*|c?2{2})
在分支里这里*,?,{}就出现了歧义,如果想匹配他们就需要使用转义。即(ab\*|c\?2\{2\})
另外如果想匹配"\"本身,也需要转义即\\
2.反义
正则表达式里常用的反义
常用反义 | 描述 |
\W | 匹配任何不是字母、数字、下划线、中文的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意不是数字的字符 |
\B | 匹配不是单词开始和结束的位置 |
反义一般在正则表达式里不常用,到目前我也没有用到过。用不好可能整个规则就表述错了。