正则表达式-速查表

字符匹配

元字符 说明
\ 转义符,详看注解 1
\d [0-9],数字
\D [^0-9],非数字
\w [0-9a-zA-Z_],单词字符
\W [^0-9a-zA-Z_],非单词字符
\s 空白符,包括空格、制表符、换行符等
\S 非空白符
\uxxxx 十六进制 Unicode 字符
\f 换页符
\n 换行符
\r 回车符
\t 水平制表符
\v 垂直制表符
\0 NULL 字符
. 匹配除换行符、回车符以外的任意字符
[abc] 字符组,详看注解 2

注解:

  1. \

    字符 \ 可以对紧随其后的字符进行转义,使其具有特殊的含义,如上述的 \d\w 等。

    另一个作用是,一些字符在正则表达式中有特殊的含义,被称作元字符,比如 *.{[()]}?\ 等,此时前面加上\ 可以使其失去特殊含义。

  2. [abc]

    字符组内部的元字符只有 -^,其他字符都会被当成普通字符。

    - 用于连接两个字符,表示在两个字符之间的字符,比如 [a-z0-9]

    ^ 放置在开始位置,表示反选。比如 [^a-zA-Z]

位置匹配

元字符 说明
\b 单词边界
\B 非单词边界
^ 字符串起始
$ 字符串结束

量词

元字符 说明
* >= 0
+ >= 1
0 or 1
详看注解 1

注解:

  1. 有几种不同的格式,比如 {X,} 表示 >=X{X} 表示 ==X{X,Y} 表示 >=X and <=Y

  2. 惰性匹配

    当量词后添加一个 ? 表示惰性匹配,即尽可能少的匹配。比如 *???{X,Y}?

分组和分支

元字符 说明
(PATTERN) 捕获组,详看注解 1
\NUMBER 分组引用,详看注解 2
(?:PATTERN) 非捕获组
PATTERN1|PATTERN2 匹配 PATTERN1 或者 PATTERN2

注解:

  1. (PATTERN)

    () 包含一段子匹配,这样做可以在之后对其进行引用,量词也可以用于整上述个子匹配。比如 (abc)+ 表示大于 0 个连续 abc

  2. \NUMBER

    数字 NUMBER 表示捕获组的序号,其分组子串序号从 1 开始,0 表示整个字符串。

零宽断言

元字符 说明
a(?=PATTERN) 先行断言(前瞻),匹配 PATTERN 时,返回 a,详看注解 1
a(?!PATTERN) 先行否定断言(前瞻),不匹配 PATTERN 时,返回 a
(?<=PATTERN)a 后行断言(后顾)
(?<!PATTERN)a 后行否定断言(后顾)

注解:

  1. a(?=PATTERN)

    零宽断言表示只匹配位置,不匹配字符。此处表示如果匹配后面的 PATTERN 时,返回 aa 用于助记,可以是完整的匹配表达式。

posted @ 2021-08-23 16:50  fluidog  阅读(104)  评论(0编辑  收藏  举报