<转>php 正则 正向预查和反向预查
既然是预查了, 那就和正常的查找有不同的地方。
预查不消耗字符, 不消耗的意思是 :
正常的正则匹配, 匹配过一个字符后这个字符就不再匹配了, 不消耗的意思是还可以继续用来匹配
还有一定就是匹配了也获得内容, 非获得性匹配
正向预查 格式 (?=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> |
posted on 2016-01-04 11:24 hahahahahai12 阅读(376) 评论(0) 收藏 举报
浙公网安备 33010602011771号