什么是正则表达式
正则表达式是检查、匹配字符串的表达式;
正则表达式是描述规则,主流语言都有良好的支持;
字符串校验、查找与替换是正则表达式主要使用场景;
字符范围匹配
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
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 | |
\n | 匹配单个换行符 | 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}