正则表达式中的特殊字符
符号 | 描述 | 记忆方法 |
---|---|---|
^ | 正则表达式开始字符 | |
$ | 正则表达式结束字符 | |
\w | 匹配字母,数字,下划线,如a、1、_ | |
\W | 非字母,数字,下划线 | |
\s | 匹配空白字符 | space |
\S | 非空白字符 | space |
\d | 匹配数字 | digital |
\D | 非数字 | digital |
\b | 单词的开始和结束 | begin |
\B | 非单词的开始和结束 | begin |
. | 匹配任意字符,包括汉字 | |
[m] | 匹配单个字符串 | |
[m1m2…n] | 匹配多个字符串 | |
[m-n] | 匹配m到n区间内的数字,字母 | |
^m | 匹配除m以外的字符串 | |
( ) | 对正则表达式进行分组,一对括号表示一组 |
正则表达式中常用的限定符
符号 | 描述 |
---|---|
* | 匹配零次或多次 |
+ | 匹配一次或多次 |
? | 匹配零次或一次 |
{m} | 重复m次 |
{m,n} | 重复m到n次。n可以省略,表示m到任意次 |
限定符号与?的组合
默认情况下,正则表达式将匹配最长的字符串最为结果。可以通过在限定符后面添加?
的方式,获得最短匹配的结果。
如:对字符串a
到字符串c
之间的字符串进行匹配,可以写成a.*c
。此时,对字符串abcabc
进行匹配,则匹配结果为abcabc
,也就是最长匹配。如果把表达式改成a.*?c
,则匹配结果为abc
,返回两个abc
符号 | 描述 |
---|---|
*? | 匹配零次或多次,且最短匹配 |
+? | 匹配一次或多次,且最短匹配 |
?? | 匹配一次或多次,且最短匹配 |
{m}? | 重复m次 ,且最短匹配 |
( ?#…) | 正则表达式中的注释 |
对正则表达式中符号使用的说明
- 形如
\d\d\d\d
可以简写为\d{4}
- 如:
[\(-]
表示最多只能取(
或-
其中之一的字符,注意,(
和)
是正则表达式中的特殊字符,如果需要把他们作为普通字符处理,需要在前面添加转义字符\
. - 正则表达式的每个分组会自动拥有一个组号。第n个分组表示为:
\n
。 组号可以用于重复匹配某个分组。