您当前的位置:首页 > 网站建设笔记 >

php正则表达式的量词

来源:PHP6与MySQL5基础教程0

使用量词

上一篇《php正则表达式的元字符》介绍了一些元字符,其中最重要的是插入符号和美元符号。接下来,有3个元字符允许多次出现:a*将匹配0个或多个a(0个a、a、aa、aaa等),a+将匹配一个或多个a(a、aa、aaa等,但是至少必须有一个a),a?将匹配最多一个a(a或者没有a的匹配)。这些元字符全都充当模式中的量词,就像花括号一样。

这些量词规定某个字母可以或者必须出现多少次
字符 含义
? 0次或1次
* 0次或多次
+ 1次或多次
{x} 正好出现x次
{x,y} 在x次和y次之间(含x和y)
{x,} 至少出现x次

为了匹配一定数量的字母,可以把数量放在花括号{}之间,指出具体的数字,它可以只是一个最小值,或者同时指出最小值和最大值。因此,a{3}将匹配aaa,a{3,}将匹配aaa、aaaa等(3个或更多的a),a{3,5}则只匹配aaa、aaaa和aaaaa(在3个a和5个a之间)。

注意:量词应用于出现在它之前的内容,因此a?将匹配0个或一个a,ab?将匹配a及其后的0个或一个b,但是(ab)?将匹配0个或一个ab。因此,为了匹配color或colour,可以使用col(o|ou)r,也可以使用colou?r作为模式。

使用量词

  • 检查字符串是否包含字母c和t,以及它们之间的一个或多个字母。要执行该操作,可使用c.+t作为模式并使用任意数量的字符串作为主题。记住:句点匹配任意字符(换行符除外)。下面每个字符串都是一个匹配:cat、count、coefficient等。单词doctor不会匹配,因为在c和t之间没有字母(尽管doctor将匹配c.*t)。
  • 检查字符串是否匹配cat或cats。首先,如果你想建立精确的匹配,可同时使用插入符号和美元符号。然后,你将得到字面量文本cat,其后接着一个s,再接着一个问号(表示0个或1个s)。最终的模式(^cats?$)将匹配cat或cats,但是不匹配my cat left或I like cats。
  • 检查字符串是否以.33、.333或.3333结尾。为了查找一个句点,可以用反斜杠对它进行转义:\.。为了查找三个句点,可使用字面量3。为了指定查找的范围3,可使用花括号{}。综合起来,该模式是\.3{2,4}。由于字符串应该结束于这个模式(其后不能接着别的内容),所以可以在模式末尾添加一个美元符号:\.3{2,4}$
  • 匹配5位的数字。一个数字可以是0至9之间的任意数字之一,因此,模式的核心部分是(0|1|2|3|4|5|6|7|8|9)。明白地讲,这意味着:数字可以是0、1、2或3……为了使之是一个5位的数字,可以在它后面接一个量词:(0|1|2|3|4|5|6|7|8|9){5}。最后,为了精确匹配它(与匹配字符串内的一个5位数字相对),可使用插入符号和美元符号:^(0|1|2|3|4|5|6|7|8|9){5}$。当然,这是一种非常有用的模式,它是匹配美国邮政编码的一种方式。

在使用花括号指定字符数时,必须总是包括最小数字。最大数字是可选的:a{3}和a{3,}是可以的,但是a{,3}则不行。

尽管这个示例演示的是在编程时如何编写和执行你自己的正则表达式,但是可以通过搜索Internet获得大量的工作示例。

顶部中部底部