贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配。
$str = '{{a}}{{b}}';
preg_match('/{{.*}}/',$str,$match);
print_r($match);//Array ( [0] => {{a}}{{b}} )
非贪婪匹配:在满足匹配时,匹配尽可能短的字符串,使用?来表示非贪婪匹配。
$str = '{{a}}{{b}}’;
preg_match('/{{.*?}}/',$str,$match);
print_r($match);//Array ( [0] => {{a}} )
几个常用的非贪婪匹配Pattern
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
Yii2中Schema.php中使用的例子:
preg_replace('/\\{\\{(.*?)\\}\\}/', '\1', $name);
在php中,单引号只能转义反斜杠(\)和单引号(’)。如果要在单引号中写反斜杠(\),就写成(\\)最稳妥。
在正则表达式中大括号({)是需要被转义的,所以要用反斜杠。
如上就解释了,为什么写成\\{。
<<<<<<<<2016年2月5日
preg_match()函数,
如果正则表达式在“字符串”中有对应的匹配,那么就会写入match数组中。比如^123在“123123”中是可以匹配字符串中的123的,那么match就是有值的。
当match有值,函数返回1。当match无值,函数返回0。
$a = preg_match('/^123/','123123',$b);
var_dump($a,$b);//int(1) array(1) { [0]=> string(3) "123" }
preg_match('/^.*?123/','123123',$b);
print_r($b);die;//Array ( [0] => 123 )
preg_match('/^.*123/','123123',$b);
print_r($b);die;//Array ( [0] => 123123 )
>>>>>>>>>>
$str = '{{a}}{{b}}';
preg_match('/{{.*}}/',$str,$match);
print_r($match);//Array ( [0] => {{a}}{{b}} )
非贪婪匹配:在满足匹配时,匹配尽可能短的字符串,使用?来表示非贪婪匹配。
$str = '{{a}}{{b}}’;
preg_match('/{{.*?}}/',$str,$match);
print_r($match);//Array ( [0] => {{a}} )
几个常用的非贪婪匹配Pattern
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
Yii2中Schema.php中使用的例子:
preg_replace('/\\{\\{(.*?)\\}\\}/', '\1', $name);
在php中,单引号只能转义反斜杠(\)和单引号(’)。如果要在单引号中写反斜杠(\),就写成(\\)最稳妥。
在正则表达式中大括号({)是需要被转义的,所以要用反斜杠。
如上就解释了,为什么写成\\{。
<<<<<<<<2016年2月5日
preg_match()函数,
如果正则表达式在“字符串”中有对应的匹配,那么就会写入match数组中。比如^123在“123123”中是可以匹配字符串中的123的,那么match就是有值的。
当match有值,函数返回1。当match无值,函数返回0。
$a = preg_match('/^123/','123123',$b);
var_dump($a,$b);//int(1) array(1) { [0]=> string(3) "123" }
preg_match('/^.*?123/','123123',$b);
print_r($b);die;//Array ( [0] => 123 )
preg_match('/^.*123/','123123',$b);
print_r($b);die;//Array ( [0] => 123123 )
>>>>>>>>>>