服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > php教程 >

<转>php 正则 正向预查和反向预查

时间:2016-01-05 11:45来源:未知 作者:最模板 点击:
既然是预查了, 那就和正常的查找有不同的地方。 预查不消耗字符, 不消耗的意思是 : 正常的正则匹配, 匹配过一个字符后这个字符就不再匹配了, 不消耗的意思是还可以继续用来

既然是预查了, 那就和正常的查找有不同的地方。

预查不消耗字符, 不消耗的意思是 :

正常的正则匹配, 匹配过一个字符后这个字符就不再匹配了, 不消耗的意思是还可以继续用来匹配

还有一定就是匹配了也获得内容, 非获得性匹配

 

正向预查 格式 (?=a|b|c ... )

返向预查 格式 (?!a|b|c ... )

前者需要满足是 a 或者 b 或者 c

而后者刚好相反 表示 不能是a,b,c 中的任何一个。

 

正向匹配的一个例子

1 <?php
2 $str = 'abzacz';
3 $perg = "/a(?=b|c)/";
4 preg_match_all($perg, $str, $match);
5 var_dump($match);

 

首先a(b|c) 表示可以匹配 ab ac

如果 a(?=b|c) 表示必须需要匹配 ab 或者ac

但是匹配的结果是a, 这没有获得b,c 这就是非获得性配置。

 

然后 最后还有一个字符d

这里就需要考虑不消耗的意思了。

a(?=b|c) 匹配了ab, ac 但是在匹配d的时候是从

第二个字符b开始了, 不是从的第三个字符c开始的, 这里就是 没有消耗的意思。

 

知道了,什么是与查询理解反向查询就简单多了。

给出一个例子就明白了

1 <?php
2 $str 'abzacz';
3 $perg "/a(?!w|f)c/";
4 preg_match_all($perg$str$match);
5 var_dump($match);
1 <br>

(责任编辑:最模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容