什么是正则表达式
正则表达式是检查、匹配字符串的表达式;
正则表达式是描述规则,主流语言都有良好的支持;
字符串校验、查找与替换是正则表达式主要使用场景;
字符范围匹配
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
A | 精准匹配单个字符 | A | a |
x|y | 允许出现的2个字符 | y | n |
[xyz] | 字符集合,允许出现集合内任意单个字符 | z | c |
[a-z] [A-Z] [0-9] |
字符范围 | a D 8 |
A a A |
[^xyz] [^0-9] |
集合内字符不允许出现 | 0 A |
y 8 |
元字符
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
d | 匹配任意单个数字 | 8 | i |
D | 匹配d规则之外的任意单个字符 | i | 8 |
w | 匹配任意单个字母数字下划线 | Y | & |
W | 匹配w之外的任意单个字符 | & | Y |
s | 匹配单个空格 | x | |
匹配单个换行符 | x | ||
. | 匹配任意单个字符(换行符除外) | -- | -- |
. | 特殊字符,只匹配. | . | 1 |
多次重复匹配
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
A{3} | 精准N次匹配 | AAA | AA |
A{3,} | 最少出现N次 | AAA | AA |
d{3,5} | 约定出现最少次数与最大次数 | 1234 | 12 |
d* | 可以出现零次至无限次,相当于{0,} | 1234 | -- |
d+ | 最少出现一次,相当于{1,} | 12 | |
d? | 最多出现一次,相当于{0,1} | 1 | 12 |
定位匹配
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
^A.* | 头匹配 | ABC | CBA |
.*A$ | 尾匹配 | CBA | ABC |
^A.*A$ | 全字匹配 | ACCCA | ACCCB |
贪婪模式与非贪婪模式
贪婪模式
- 默认匹配规则
- 在满足条件的情况下尽可能多匹配到字符串
- 示例:111222333 正则:d{6,8}
- 匹配结果:11122233
非贪婪模式
- 在满足条件的情况下尽可能少匹配到字符串
- 示例:111222333 正则:d{6,8}?
- 匹配结果:111222
表达式分组
- 分组将"正则"分组为多个子表达式
- 示例:abababcdcdcd
- 正则表达式:(ab){3}(cd){3}