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

正则表达式是从左到右按优先级计算的,这与算术表达式非常相似。

从左到右执行相同的优先级,不同优先级的操作更高,然后更低。下表显示了各种正则表达式运算符的优先级顺序,从最高到最低:



操作人员
描述



转义字符


()、(())、(=)、{
圆括号和方括号


*,+,},{,},{,n,m }
预选赛


$,$,任何字符,任何字符
位置和顺序(即位置和顺序)


|
替换, 或操作

The character has a priority higher than the replacement operator, making m|food match m or food.To match mood or food




今天的表是汇总的元分类在整个正则表达式的语法特点,帮助记忆的元字符。同样地,文档加载到MSDN。





操作人员




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







操作人员



解释









转义字符





()、(())、(=)、{



括号括号





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



预选赛





$,$,任何字符,任何字符



位置和顺序





|



代替






人物都有一个优先级高于置换操作,使我|食物匹配M或食物搭配的心情或食物,使用括号来创建子表达式产生(M | F)设计。



特殊字符表










特殊字符



笔记





美元



输入字符串的结束位置匹配。如果RegExp对象的Multiline属性设置,然后在美元也符合前面的位置或 R匹配$字符本身,请使用 $。





()



开始和结束标记子表达式,子表达式可以捕捉到未来使用。如果你想匹配这两个字,使用( )。





*



一个零或多个匹配前面的字符或子表达式。如果你愿意,请使用*字符。





+



一个字符或子表达式匹配一次或多次。如果你愿意,请使用+字符 +行为。









匹配除该行以外的任何单个字符如果您想匹配,请使用。





{ }



马克:括号表达式的开头。要匹配这些字符,请使用和。









零或一场比赛之前的字符或子表达式或非贪婪限定符。如果你想匹配的字符,使用。









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





/



表示文本中正则表达式的开始或结束。





^



在开始时匹配输入字符串的位置,除了在括号表达式中使用的情况之外,在这种情况下它与字符集相反。





{ }



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





|



指出两个项之间的选择。|匹配,请使用 |。








预选赛的意义










性格



解释





*



一个零或多个匹配前面的字符或子表达式。例如,ZO *匹配Z和动物园。相当于{ 0 }。





+



一个字符或子表达式匹配一次或多次。例如,ZO +比赛Zo和动物园,但不符合Z +相当于{ 1 }。









在零或第一个匹配字符或表达式。例如,做(ES)比赛做或不做。这就相当于{0,1}。





{ }



n是一个非负整数。只需匹配n次。例如,o 2 }与鲍伯中的o不匹配,但与食物中的两个o相匹配。





{ }



n是一个非负整数。匹配至少n倍。例如,O { 2 }不在鲍伯的比赛,比赛都在foooood。O { 1,}相当于O + O { 0 }相当于O *。





{,}



m和n是非负整数,n≤M.至少匹配n次,最多m次。例如,O 3 } {比赛第一三O在fooooood。O {0,1}等价于O。注意:你不能使用逗号和数字之间的空间内插。






由于在大输入文档中,章节号可能超过九,所以需要一种方法来处理两个或三位的节号。限定符给你这个能力:







/章{ } { } 1-9 0-9 * /






注意,限定符出现在范围表达式之后。因此,它被应用到整个范围表达式中,在这种情况下,只指定从0到9(包括0和9)的数字。

+限定符不在这里使用,因为不需要在第二个位置或后面的位置有一个数字。不要使用它吗字符,因为它将章节号限制为两位数。您需要在章节和空格字符后面至少匹配一个数字。

如果您知道章节号仅限于99章,您可以使用下面的表达式指定至少一位,但至少有两位数字。







/章0-9 } { {1,2} /






上述表达式的缺点是,大于99的章节数仍然只匹配两个数字的开头。另一个缺点是第0章也将匹配:







/章{ } { } / 0-9数字1-9














/章{ } { } 1-9 0-9 {0,1} /






* + +和限定符称为贪婪,因为它们匹配尽可能多的文本。

例如,您可以搜索HTML文档以找到包含在H1标记中的章节标题:







第1章正则表达式入门






下面的表达式匹配从开始到符号()的所有内容。














如果只需要匹配H1标签的开始,那么下面的非贪婪表达式只匹配。














表达式从一个贪婪表达式转换为一个非贪婪表达式或最小匹配,然后将其置于一个*、+或限定符之后。