慕丝7168662
2017-12-06 15:21
<?php
$subject = "abdef";
$pattern = '/a(.?*)d/';
preg_match($pattern, $subject, $matches);
print_r($matches);
请问$pattern = '/a(.*?)d/';能匹配为什么$pattern = '/a(.?*)d/';就匹配不了呢?
当ad之间只有一个b时?可以匹配到b然后*是匹配0或者1次那他不匹配不就可以了???
而$pattern = '/a(.?.*)d/';这样又可以实在是不懂了,求高手们指点
.*? 中 .表示匹配任意字符(除换行符),*表示0或多次,合在一起就是匹配全字符,而?(0或1次) 则是非贪婪匹配,他一找到符合的就匹配。比如说abdeedf 他匹配的是abd 而不是abdeed 因为是懒惰模式
而.?* .?本来就是0或一次了 你加个*还不如直接.*呢。。而且这样好像会出错,具体我也不懂。
.?.*就很明显了 .?是0或1次,.*是0或多次 可以匹配
高手都不会来看教程了,都出师了,希望有老师能看到吧,正则比较复杂,我反正一直就没有搞懂过
PHP进阶篇
181835 学习 · 2577 问题
相似问题