PHP正则表达式学习总结——重复/量词

来源:互联网 发布:人工智能会计师 编辑:程序博客网 时间:2024/05/21 08:38
重复次数是通过量词指定的,可以紧跟在下面元素之后: 

1.单独的字符, 可以是经过转义的 
2.元字符。 
3.字符类 
4.后向引用(参加下一部分) 
5.子组(除非它是一个断言) 

一般的重复量词指定了一个最小数值和一个最大数值的匹配次数, 通过花括号包裹两个数字,两个数字之间用逗号隔开的语法定义。 两个数值都必须小于 65536, 并且第一个数字必须小于等于第二个。 比如: z{2,4} 匹配 ”zz”, “zzz”, “zzzz”。 单个的右花括号不是特殊字符。 如果第二个数字被省略,但是逗号仍然存在,就代表没有上限; 如果第二个数字和逗号都被省略,那么这个量词就限定的是一个确定次数的匹配。 比如 [aeiou]{3,} 匹配至少三个连续的元音字母,但是同时也可以匹配更多, 而 \d{8} 则只能匹配 8 个数字。 左花括号出现在不允许使用量词的位置或者与量词语法不匹配时, 被认为是一个普通字符,对它自身进行原文匹配。 比如,{,6}就不是一个量词, 会按照原文匹配四个字符 ”{,6}”。 

量词 {0} 是被授权的,它会导致的行为是认为前面的项和量词不存在。 

为了方便(以及历史的兼容性),最常用的三个量词都有单字符缩写。 

单字符量词  *  等价于 {0,}  
+  等价于 {1,}  
?  等价于 {0,1}  

可以通过一个不匹配任何字符的子模式后面紧跟一个匹配 0 或多个字符的量词来构造一个没有上限的无限循环。 比如:(a?)* 

0 0