正则表达式 运算符优先级介绍

正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。

相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从最高到最低说明了各种正则表达式运算符的优先级顺序:

运算符 描述
\   转义符  
(), (?:), (?=), []   圆括号和方括号  
*, +, ?, {n}, {n,}, {n,m}   限定符  
^, $, \任何元字符、任何字符   定位点和序列(即:位置和顺序)  
|   替换,"或"操作
字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。
 

今天的表是对整体的正则表达式语法中的元字符的分类汇总。帮助记忆各元字符。同上一样,该文档转载至MSDN。

运算符

下表从最高到最低说明了各种正则表达式运算符的优先级顺序:

运算符

说明


\

 

转义符

 

(), (?:), (?=), []

 

括号和中括号

 

*, +, ?, {n}, {n,}, {n,m}

 

限定符

 

^, $, \任何元字符、任何字符

 

定位点和序列

 

|

 

替换

 

字符具有高于替换运算符的优先级,使得“m|food”匹配“m”或“food”。若要匹配“mood”或“food”,请使用括号创建子表达式,从而产生“(m|f)ood”。

特殊字符表

特殊字符

注释


$

 

匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,那么 $ 还匹配 \n 或 \r 前面的位置。若要匹配 $ 字符本身,请使用 \$。

 

( )

 

标记子表达式的开始和结束。可以捕获子表达式以供以后使用。若要匹配这两个字符,请使用 \( 和 \)。

 

*

 

零次或多次匹配前面的字符或子表达式。若要匹配 * 字符,请使用 \*。

 

+

 

一次或多次匹配前面的字符或子表达式。若要匹配 + 字符,请使用 \+。

 

.

 

匹配除换行符 \n 之外的任何单个字符。若要匹配 .,请使用 \。

 

[ ]

 

标记中括号表达式的开始。若要匹配这些字符,请使用 \[ 和 \]。

 

?

 

零次或一次匹配前面的字符或子表达式,或指示“非贪心”限定符。若要匹配 ? 字符,请使用 \?。

 

\

 

将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,字符 n 匹配字符 n。\n 匹配换行符。序列 \\ 匹配 \,序列 \( 匹配 (。

 

/

 

表示文本正则表达式的开始或结束。若要匹配 / 字符,请使用 \/。

 

^

 

匹配输入字符串开始处的位置,但在中括号表达式中使用的情况除外,在那种情况下它对字符集求反。若要匹配 ^ 字符本身,请使用 \^。

 

{ }

 

标记限定符表达式的开始。若要匹配这些字符,请使用 \{ 和 \}。

 

|

 

指出在两个项之间进行选择。要匹配 |,请使用 \|。

 

限定符含义

字符

说明


*

 

零次或多次匹配前面的字符或子表达式。例如,zo* 匹配 z 和 zoo。* 等效于 {0,}。

 

+

 

一次或多次匹配前面的字符或子表达式。例如,zo+ 匹配 zo 和 zoo,但不匹配 z。+ 等效于 {1,}。

 

?

 

零次或一次匹配前面的字符或子表达式。例如,do(es)? 匹配 do 或 does 中的 do。? 等效于 {0,1}。

 

{n}

 

n 是非负整数。正好匹配 n 次。例如,o{2} 不匹配 Bob 中的 o,但匹配 food 中的两个 o。

 

{n,}

 

n 是非负整数。至少匹配 n 次。例如,o{2,} 不匹配 Bob 中的 o,而匹配 foooood 中的所有 o。o{1,} 等效于 o+。o{0,} 等效于 o*。

 

{n,m}

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjpyzj.html