正则表达式

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个