正反向预搜索(前后查看)初解

作者:enenba | 发表于:2012-01-07 23:04 | 分类:正则表达式

这次是对正则的研究,前一天看了正向预搜索(向前查看)、和反向预搜索(向后查看)

“向前查看”和“向后查看”。他们也被称作“零长度断言”。他们和锚定一样都是零长度的,“前后查看”会实际匹配字符,只是他们会抛弃匹配只返回匹配结果:匹配或不匹配。

其正则的特点

正向预搜索:"(?=xxxxx)"

反向预搜索:"(?<=xxxxx)"

 

以下两个PHP正则的例子,简单解释下我对前后查看的理解:

 

 

<?php
/*
第一个例子,此正则匹配enenba.com
enenba.com前面必须要有“www.”
*/
$test = 'ag14awww.enenba.comaaskf.comaenenba,com';
preg_match('/(?<=www\.)enenba\.com/i',$test,$rr);
if($rr) {
echo 'OK';
}

echo '----';

/*
第二个例子,这个正则是也是匹配enenba.com
enenba.com后面必须有个“/”
*/
$test = 'aga214enenba.com/aaskf.comaenenba,com';
preg_match('/enenba\.com(?=\/)/i',$test,$rr);

if($rr) {
echo 'OK';
}
?>

 

两个输出的结果是

OK---OK

上一篇: PHP正则匹配中文UTF-8 和 gb2312的正则区别   |   下一篇:关于零宽断言的解释» 标签: PHP验证 正则表达式 PHP正则

评论: