php正则表达式之元字符

前面我们知道了,正则表达式是由定界符,原子,元字符,模式修正符组成的,原子是正则中的基本组成单位,它可以独立使用,元字符是用来修正原子的,今天就再来复习一下几个元字符的用法。比如* 我们前面说了,*的意思是在此之前的原子可以出现0次1次或者多次,如果想把它作为元字符使用\*转义掉就可以了。所以它的作用就不详细介绍了。继续下面的。

+ 在此之前的原子可以出现一次或者多次, 意思是至少要出现一次。

? 在此之前的原子可以出现0次或者1次。

{} 自定义在此之前原子的重复次数,可以是单数也可以是一个范围{x,n}至少几次,最大几次。

. 匹配除了换行外的任意字符。

| 或者的意思, 提供一个选项, 匹配中一个即可。

() 子匹配模式, 正则匹配完全文后会首先去查找子匹配正则。也可以在()内使用?:取消该子模式,结果是一个数组,第一个子模式就放到第一个元素当中,可以把子模式取出来再当成正则表达式的一部分,取出第一个子模式用\1..

\b 匹配边界。

\B 匹配非边界。

^ 在原子表中使用代表取反, 在正则中使用代表要以它为开头。

$ 匹配一个结尾

<?php

$p = '/ax+b/';
$s = 'axb';
if(preg_match($p,$s))
{
    echo "匹配成功";
}

x出现了一次, 所以匹配成功。

<?php

$p = "/^a\B\d{2}(\W)\s\\1\d{2,4}$/";
$s = "a23/ /5678";
if(preg_match($p,$s,$arr))
{
    print_r($arr);
}

^a匹配出了以a开头\B匹配出了非边界\d{2}匹配出了两位十进制数,\W匹配出了非a-zA-Z0-9_ \s匹配出了空格和空字符\1引用了第一个子匹配模式,\d{2,4}$匹配出了必须要以至少2位最多4位的十进制数字为结尾,合在一起就是匹配出了结果,a23/ /5678 ,php正则中可以有多个子匹配模式, 如果给了$arr这个参数, 就会按数组的索引排列 $arr[1],$arr[2] ..以此类推。

此条目发表在php分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注