正则表达式——表达式中的优先级
正则表达式千变万化,都是由之前介绍的字符组、括号、量词等等基本结构组合而成的,只要掌握了组合的规则,面对再复杂的表达式,都能把结构梳理清楚。
仔细观察会发现,正则表达式的元素之间的组合关系只有4种。
| 普通拼接 | abc |
|---|---|
| 括号 | (abc) |
| 量词 | a*b |
| 多选结构 | ab |
注:“普通拼接”可能是最常见的组合关系,只是品势不一定明确意识到,正则表达式,abc就是a和b和c的普通拼接。a(ab)则可以看做a和(bc)的拼接。
出列出的4种组合关系外,正则表达式中的其他结构,比如环视(?=...),都可以视为单独的元素,其中的正则表达式最终可以归类到上面的4种组合关系中。
所以,真正需要关心的就是这4种组合的优先级。
正则表达式的优先级
| 优先级 | 组合 | 说明 |
|---|---|---|
| 1 | (regex) | 整个括号内的字表达式称为单个元素 |
| 2 | * ? + | 限定之前紧邻的元素 |
| 3 | abc | 普通拼接,元素相继出现 |
| 4 | a|bc | 多选结构 |
注:数字越小,优先级越高。
正则表达式中的优先级举例
| 正则表达式 | 能匹配的字符串 | 说明 |
|---|---|---|
| ab | ab | 普通拼接 |
| ab+ | ab abb abab | 量词的优先级高于普通拼接 |
| (ab)+ | abc aabc aabc | 括号的优先级高于量词 |
| ab|cd | ab cd | 多选结构的优先级低于量词 |
| (ab|c)d | abd cd | 括号的优先级高于多选结构和量词 |
![]() |


浙公网安备 33010602011771号