正则表达式 - 运算符优先级
正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。
相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从最高到最低说明了各种正则表达式运算符的优先级顺序:
| 运算符 | 描述 |
|---|---|
| \ | 转义符 |
| (), (?:), (?=), [] | 圆括号和方括号 |
| *, +, ?, {n}, {n,}, {n,m} | 限定符 |
| ^, $, \任何元字符、任何字符 | 定位点和序列(即:位置和顺序) |
| | |
替换,"或"操作 字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。 |
以下是一些常见正则表达式运算符按照优先级从高到低的顺序:
转义符号:
\是用于转义其他特殊字符的转义符号。它具有最高的优先级。示例:
\d、\.等,其中\d匹配数字,\.匹配点号。括号: 圆括号
()用于创建子表达式,具有高于其他运算符的优先级。示例:
(abc)+匹配 "abc" 一次或多次。量词: 量词指定前面的元素可以重复的次数。
示例:
a*匹配零个或多个 "a"。字符类: 字符类使用方括号
[]表示,用于匹配括号内的任意字符。示例:
[aeiou]匹配任何一个元音字母。断言: 断言是用于检查字符串中特定位置的条件的元素。
示例:
^表示行的开头,$表示行的结尾。连接: 连接在没有其他运算符的情况下表示字符之间的简单连接。
示例:
abc匹配 "abc"。管道: 管道符号
|表示"或"关系,用于在多个模式之间选择一个。示例:
cat|dog匹配 "cat" 或 "dog"。
接下来我们看下以下正则表达式的优先级说明:
\d{2,3}|[a-z]+(abc)*
\d{2,3}匹配两到三个数字。|表示或。[a-z]+匹配一个或多个小写字母。(abc)*匹配零个或多个 "abc"。
点我分享笔记