正则表达式-速查表
字符匹配
| 元字符 | 说明 |
|---|---|
| \ | 转义符,详看注解 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用于助记,可以是完整的匹配表达式。

浙公网安备 33010602011771号