正则表达式-速查表
字符匹配
元字符 | 说明 |
---|---|
\ | 转义符,详看注解 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 |
注解:
\
字符
\
可以对紧随其后的字符进行转义,使其具有特殊的含义,如上述的\d
、\w
等。另一个作用是,一些字符在正则表达式中有特殊的含义,被称作元字符,比如
*
、.
、{[()]}
、?
、\
等,此时前面加上\
可以使其失去特殊含义。[abc]
字符组内部的元字符只有
-
和^
,其他字符都会被当成普通字符。
-
用于连接两个字符,表示在两个字符之间的字符,比如[a-z0-9]
。
^
放置在开始位置,表示反选。比如[^a-zA-Z]
。
位置匹配
元字符 | 说明 |
---|---|
\b | 单词边界 |
\B | 非单词边界 |
^ | 字符串起始 |
$ | 字符串结束 |
量词
元字符 | 说明 |
---|---|
* | >= 0 |
+ | >= 1 |
? | 0 or 1 |
详看注解 1 |
注解:
有几种不同的格式,比如
{X,}
表示>=X
,{X}
表示==X
,{X,Y}
表示>=X and <=Y
。惰性匹配
当量词后添加一个
?
表示惰性匹配,即尽可能少的匹配。比如*?
、??
、{X,Y}?
。
分组和分支
元字符 | 说明 |
---|---|
(PATTERN) | 捕获组,详看注解 1 |
\NUMBER | 分组引用,详看注解 2 |
(?:PATTERN) | 非捕获组 |
PATTERN1|PATTERN2 | 匹配 PATTERN1 或者 PATTERN2 |
注解:
(PATTERN)
用
()
包含一段子匹配,这样做可以在之后对其进行引用,量词也可以用于整上述个子匹配。比如(abc)+
表示大于 0 个连续abc
。\NUMBER
数字
NUMBER
表示捕获组的序号,其分组子串序号从1
开始,0
表示整个字符串。
零宽断言
元字符 | 说明 |
---|---|
a(?=PATTERN) | 先行断言(前瞻),匹配 PATTERN 时,返回 a ,详看注解 1 |
a(?!PATTERN) | 先行否定断言(前瞻),不匹配 PATTERN 时,返回 a |
(?<=PATTERN)a | 后行断言(后顾) |
(?<!PATTERN)a | 后行否定断言(后顾) |
注解:
a(?=PATTERN)
零宽断言表示只匹配位置,不匹配字符。此处表示如果匹配后面的
PATTERN
时,返回a
。a
用于助记,可以是完整的匹配表达式。