字符
语法 | 说明 | 表达式 | 可匹配 |
---|---|---|---|
任意普通字符 | 匹配自身 | abc | abc |
\ | 转义字符 | a\\b | a\b |
. | 匹配除了换行符以外的任何字符 相当于\w的加强版(\w看下面一张表)可匹配空格 | .+ | a c1b |
[…] | 字符集 可以都写出来也可以写个范围如[a-z],第一个字符如果是\^表示取反,如[\^a]表示a除外的所有字符,如果字符集内有特殊字符,需要转义 | a[bc]d | abd,acd |
预定义字符集
语法 | 说明 | 表达式 | 可匹配 |
---|---|---|---|
\d | 数字[0-9] | \d | 1,2,3…. |
\D | 非数字[^\d] | \D | a,b,c… |
\s | 空白字符 | a\sc | a c |
\S | 非空白字符 | a\Sc | abc |
\w | 匹配字母,数字,下划线[A-Za-z0-9_] | \w+ | a_b 1 |
\W | 匹配任意不是字母,数字,下划线 的字符 |
量词
语法 | 说明 | 表达式 | 可匹配 |
---|---|---|---|
* | 匹配字符重复0次或无限次 | ab* | a,ab,abb,abbbb… |
+ | 匹配字符重复1次或无限次 | ab+ | ab, abb, abbb… |
? | 匹配字符重复0次或1次 | ab? | a, ab |
{n} | 匹配字符重复n次 | ab{2}c | abbc |
{n,m} | 匹配字符重复n到m次 | ab{1,2}c | abc, abbc |
{n,} | 匹配字符至少重复n次 | ab{2,}c | abbc |
边界匹配
语法 | 说明 | 表达式 | 可匹配 |
---|---|---|---|
^ | 匹配行或字符串的开头 | ^a | a |
$ | 匹配行或字符串的结尾 | c$ | c |
\A | 匹配字符串的开头 | \Aa | a |
\Z | 匹配字符串的结尾 | c\Z | c |
\b | 不会消耗任何字符只匹配一个位置(单词边界,\w能表示的范围) | \bb\b | a b c的b,a!b!c的b |
逻辑分组
语法 | 说明 | 表达式 | 可匹配 |
---|---|---|---|
| | 或,左右表达式匹配一个即可 | ab|cd | ab,cd |
(…) | 一个左右括号为一个分组,分组有自己的编号,做左到右每遇到一个左括号分组编号就+1。分组后面可接量词,在分组中的|范围也仅仅在这个分组内有效 | (a){2} | aa |
特殊构造(预查)
语法 | 说明 | 表达式 | 可匹配 |
---|---|---|---|
(?:) | 非获取匹配 | a(?:bc|cd) | abc,acd |
(?=…) | 之后的内容需要匹配 | a(?=\d) | 匹配a后面是数字的字符串 |
(?!…) | 之后的内容需要不匹配 | a(?!\d) | 匹配a后面不是数字的字符串 |
(?<=…) | 之前的内容需要匹配 | (?<=\d)a | 匹配a前面是数字的字符串 |
(?<!…) | 之前的内容需要不匹配 | (?<!\d)a | 匹配a前面不是数字的字符串 |