1.需要转义的字符
- 起止匹配:^ $(特例:在括号中可以直接使用 ^ 表示非的逻辑)
- 子表达式:( )
- 匹配任意字符:.
- 量词:{ } ? * +
- 中括号表达式:[ ]
- 或逻辑:|
- 转义标记符本身:\
2.字符类
2.1 任意字符
用 . 表示任意字符
2.2 用 [ ] 表示一个字符
[ ]中的字符是或的关系。^ 用在 [ ] 中表示对其后结果的否定。
- [abc]:a、b、c 任一个。
- [^abc]:a、b、c 之外的任何字符。
- [a-z]:任意小写字母
- [A-Z]:任意大写字母
- [0-9]:任意数字
特别需要注意的一点,如果 . (点号)在 [] 之中,这时 . 就表示点号了,而不是“任意字符”的含义。
2.3 预定义字符类
将一些常用的字符类组合进行预定义。
- \s:非空白符
- \S:空白符
- \d:数字,等同于
[0-9]
- \D:非数字
[^0-9]
- \w:词字符
[a-zA-Z_0-9]
- \W:非词字符
[^a-zA-Z_0-9]
3.逻辑操作符
符号 | 含义 |
---|---|
XY | Y跟在X后面 |
X|Y | X或Y |
(X) | 子表达式,配合组使用 |
4.边界匹配符
匹配符 | 含义 |
---|---|
^ | 一行开始 |
$ | 一行结束 |
\b | 词的边界 |
\B | 非词的边界 |
\G | 前一个匹配的结束 |
5.量词
贪婪形 | 勉强形 | 占有形 | 匹配规则 |
---|---|---|---|
X? | X?? | X?+ | 一个或零个X |
X* | X*? | X*+ | 零个或多个X |
X+ | X+? | X++ | 一个或多个X |
X{n} | X{n}? | X{n}+ | 恰好n个X |
X{n,} | X{n,}? | X{n,}+ | 至少n个X |
X{n,m} | X{n,m}? | X{n,m}+ | X至少n个且不超过m个 |