關(guān)于正則匹配,preg_match()函數(shù)是如何運(yùn)作的?
我先是寫了以下代碼,
<?php $subject?=?"my?email?is?spark@imooc.com"; //在這里補(bǔ)充代碼,實(shí)現(xiàn)正則匹配,并輸出郵箱地址 $pattern='/\w+@\w+\.(com||cm)/'; preg_match($pattern,$subject,$match); //echo?$match[0]; print_r($match); 結(jié)果是: Array ( ????[0]?=>?spark@imooc.com ????[1]?=>?com ) 有兩個(gè),第二個(gè)是com
然后我修改了一下正則表達(dá)式;代碼如下: <?php $subject?=?"my?email?is?spark@imooc.com"; //在這里補(bǔ)充代碼,實(shí)現(xiàn)正則匹配,并輸出郵箱地址 $pattern='/\w+@\w+\.\w+/'; preg_match($pattern,$subject,$match); //echo?$match[0]; print_r($match); 結(jié)果是: Array ( ????[0]?=>?spark@imooc.com ) 就沒有[1]了。 為什么呢? 而且,我發(fā)現(xiàn)例子里的: $subject?=?"abcdef"; $pattern?=?'/a(.*?)d/'; preg_match($pattern,?$subject,?$matches); print_r($matches);?//結(jié)果為:Array?(?[0]?=>?abcd?[1]?=>?bc?) 例子里輸出的bc是abcd的中間兩個(gè),而我第一個(gè)代碼輸出的com是郵箱的末尾。這是為什么?
2016-02-27
添加的圓括號(hào)相當(dāng)于給要匹配的內(nèi)容分組,preg_match()是把整體匹配和分組匹配的內(nèi)容都輸出了
$subject?=?"my?email?is?spark@imooc.com";
$pattern='/(\w+)@(\w+)\.(\w+)/';
你把正則改成這樣輸出下,我想你應(yīng)該就明白了