1.preg_match和preg_match_all的区别
preg_match和 preg_match_all区别是preg_match只匹配一次。而preg_match_all全部匹配,直到字符串结束。例:
<?php //注:正则 /a.+?e/ 是非贪婪模式(因为量词‘+’后面加上了‘?’),如果使用 /a.+?e/U 则变回了贪婪模式 preg_match("/a.+?e/","abcdefgabcdefgabcdefg",$out1); preg_match_all("/a.+?e/","abcdefgabcdefgabcdefg",$out2); var_dump($out1); var_dump($out2); /* 输出: array (size=1) 0 => string 'abcde' (length=5) array (size=1) 0 => array (size=3) 0 => string 'abcde' (length=5) 1 => string 'abcde' (length=5) 2 => string 'abcde' (length=5) */ ?>
2.贪婪模式和非贪婪模式的区别
如:String str="abcaxc";
Patter p="ab*c";
贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。
非贪婪匹配:就是匹配到结果就好,较少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。
例:
<?php $str = "http://www.baidu/.com?url=www.sina.com/"; preg_match("/http:(.*)com/", $str, $matches1); //贪婪匹配 var_dump($matches1); preg_match("/http:(.*?)com/", $str, $matches2); //非贪婪匹配(量词'*'后面跟上了'?') var_dump($matches2); /* array (size=2) 0 => string 'http://www.baidu/.com?url=www.sina.com' (length=38) 1 => string '//www.baidu/.com?url=www.sina.' (length=30) array (size=2) 0 => string 'http://www.baidu/.com' (length=21) 1 => string '//www.baidu/.' (length=13) */ ?>
3.preg_match_all参数PREG_PATTERN_ORDER(默认)和PREG_SET_ORDER的区别
<?php echo('PREG_PATTERN_ORDER'); preg_match_all("<[^>]+>(.*)[^>]+>U", "start: this is a testend", $out1); var_dump($out1); echo('PREG_SET_ORDER'); preg_match_all("<[^>]+>(.*)[^>]+>U", "start: this is a testend", $out2, PREG_SET_ORDER); var_dump($out2); /* PREG_PATTERN_ORDER array (size=2) 0 => array (size=3) 0 => string 'start: ' (length=14) 1 => string 'this is a test' (length=21) 2 => string 'end' (length=10) 1 => array (size=3) 0 => string 'start: ' (length=7) 1 => string 'this is a test' (length=14) 2 => string 'end' (length=3) PREG_SET_ORDER array (size=3) 0 => array (size=2) 0 => string 'start: ' (length=14) 1 => string 'start: ' (length=7) 1 => array (size=2) 0 => string 'this is a test' (length=21) 1 => string 'this is a test' (length=14) 2 => array (size=2) 0 => string 'end' (length=10) 1 => string 'end' (length=3) */ ?>
延伸阅读:preg_match_all使用实例
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字符串
, 模式
, 区别
, preg match
, 贪婪
, 贪婪模式
, preg_match
, 非贪婪模式
, 非贪婪
, preg_match_all
, 贪婪匹配
match函数
php 正则 pregmatch、php preg replace函数、php preg match函数、php preg match 使用、php 正则函数,以便于您获取更多的相关知识。