今天无意看到一题正则,有环视功能相关
其实这是一个很专业的名词。
它并不匹配任何字符,只是匹配文本中的特定位置
环视两种类型:顺序环视跟逆序环视
顺序环视:?= or ?!
顺序环视是从左向右匹配文本的
(?=\d)表示,当前位置右边的字符是数字,则匹配成功
(?!\d)表示,当前位置右边的字符不是数字,则匹配成功
逆序环视:?<= or ?
顺序环视是从右向左匹配文本的
(?<=\d)表示,当前位置左边的字符是数字,则匹配成功
(?
记住,环视功能并
不匹配任何字符,只匹配位置。
例子一
看代码:
正则例子
$string='My web site is www.pylong.com ,welcome to
visit!';
$patten="/(?=pylong.com)(pylong)/i";
preg_match_all($patten,$string,$result,PREG_PATTERN_ORDER);
var_dump($result);
?>
结果:
array(2) { [0]=> array(1) { [0]=>
string(6) "pylong" } [1]=> array(1) {
[0]=> string(6) "pylong" } }
这个很好理解,首先匹配pylong这个字符串,并且,从p开始,从左到右环视,看是否能有pylong.com,也就是说,pylong.com是否存在在pylong这个字符串起始位置处
例子二
代码:
正则如下
$string='My web site is www.pylong.com ,welcome to
visit!';
$patten="/(pylong)(?=\.com)/i";
preg_match_all($patten,$string,$result,PREG_PATTERN_ORDER);
var_dump($result);
?>
结果:
array(2) { [0]=> array(1) { [0]=>
string(6) "pylong" } [1]=> array(1) {
[0]=> string(6) "pylong" } }
基本跟上边例子差不多
而逆向环视,则是从右到左。