字符匹配
基本的匹配法则
字符 | 作用 | 检索 | 结果 |
---|---|---|---|
一般字符 | 匹配自身 | abc | abc |
. | 匹配任意字符(除换行符"\n") | a.c | abc、adc |
\ | 转义字符,改变原有字符含义 | a.c (a\\b) | a.c而不是abc(a\b) |
[…] | 字符集,按照字符集中的规则匹配 | a[bc]d | abd、acd |
预定义字符
默认的指定含义字符,可以写在字符集[…]中
字符 | 作用 | 检索 | 结果 |
---|---|---|---|
\d | 匹配一个数字字符: [0-9] | a\dc | a2c |
\D | 匹配一个非数字字符:[^\D] | a\Dc | abc |
\s | 匹配空白字符:[空格、\t、\r、\n] | a\sc | a c |
\S | 匹配任何非空白字符:[^\s] | a\Sc | abc |
\w | 匹配字母、数字、下划线:[A-Za-z0-9_] | a\wc | abc |
\W | 匹配非字母、数字、下划线:[^\w] | a\Wc | a c |
定位符
确定匹配范围
字符 | 作用 | 检索 | 结果 |
---|---|---|---|
^ | 匹配字符串开头(多行则匹配每一行开头),若在[ ]中则表示不在[ ]中的字符 | ^ab | ab |
$ | 匹配字符串末尾(多行则匹配每一行末尾) | ab$ | ab |
\A | 仅匹配字符串开头 | \Aabc | abc |
\Z | 仅匹配字符串结尾 | abc\Z | abc |
\b | 匹配单词字符和非单词字符之间,即字与空格间的位置 | a\b!bc | a!bc |
\B | 非单词边界匹配:[^\b] | a\Bc | ac |
数量词
检索出现次数符合设定的字符串,用在字符或者(…)后
字符 | 作用 | 检索 | 结果 |
---|---|---|---|
* | 匹配一个字符0次或者无限次 | abc* | ab、abccc |
+ | 匹配一个字符1次或者无限次 | abc+ | abc、abcc |
? | 匹配一个字符0次或者1次 | abc? | ab、abc |
{m} | 匹配前一个字符m次 | ab{3}c | abbbc |
{m ,} | 至少匹配前一个字符m次 | ab{2,} | abb、abbb |
{, m} | 匹配一个字符0到m次 | ab{, 2} | a、ab、abb |
{m, n} | 匹配前一个字符m-n次 | ab{1,2} | ab、abb |
逻辑、分组
字符 | 作用 | 检索 | 结果 |
---|---|---|---|
| | 匹配左边或者右边一个字符(先匹配左边,成功则跳过右边) | abc | def |
(…) | 括号作为分组 | a(123|456)c | a456c |
(?=pattern) | 匹配别名pattern的字符串 | ab(?=1|2) | ab2 |
运算优先级
正则表达式从左到右进行计算,并遵循优先级顺序
运算符 | 含义 |
---|---|
\ | 转义符 |
(), (? : ), (?=), [] | 圆括号和方括号 |
*, +, ?, {m}, {m,}, {m,n}, {, m} | 限定符 |
^, $, \任何元字符、任何字符 | 定位点和序列 |
| | 替换,"或"操作 |