概述
正则表达式符号,即,特殊符号“*”、“+”和“?”,它们可以用于匹配字符串模式出现一次、多次或未出现的情况。星号或称星号操作符匹配它左边那个正则表达式出现零次或零次以上的情况(在计算机语言和编译器原理里,此操作符被叫做Kleene闭包操作符)。加号(+)操作符匹配它左边那个正则表达式模式至少出现一次的情况(它也被称为正闭包操作符),而问号操作符(?)匹配它左边那个正则表达式模式出现零次或一次的情况。1
优先级顺序像代数运算一样,正规式中的运算符也有假设的“优先级”顺序,这意味着,运算符要以特定的顺序来结合运算对象,下面是正规式运算符的优先级顺序:
(1)具有最高优先级的是闭包运算(星闭包*和正闭包+),它类似于代数运算中的幂运算,也就是说,星运算符只作用到左边构成合法正规式的最短符号序列.
(2)具有其次优先级的是“连接”运算符,它类似于代数运算中的乘法,由于连接是结合的运算符,对连续的连接,以什么顺序来分组是无关紧要的,但如果要做选择,通常采用左结合.
(3)优先级别最低的是“并”运算(+运算符),它类似于代数运算中的加法。同样,由于并也是结合的,对连续的并,以什么顺序来分组也是无关紧要的,但如果要做选择。通常采用左结合.
当然,有时不希望按照运算符的优先级所要求的那样来对正规式分组。如果是这样,就随意用括号按照所选择的来对运算对象分组。另外,在需要分组的运算对象外面加上括号,这永远不会引起任何错误,即使所需要的分组是优先级规则所蕴涵的也是如此。2