关于正则匹配,preg_match()函数是如何运作的?
我先是写了以下代码,
<?php $subject = "my email is spark@imooc.com"; //在这里补充代码,实现正则匹配,并输出邮箱地址 $pattern='/\w+@\w+\.(com||cm)/'; preg_match($pattern,$subject,$match); //echo $match[0]; print_r($match); 结果是: Array ( [0] => spark@imooc.com [1] => com ) 有两个,第二个是com
然后我修改了一下正则表达式;代码如下: <?php $subject = "my email is spark@imooc.com"; //在这里补充代码,实现正则匹配,并输出邮箱地址 $pattern='/\w+@\w+\.\w+/'; preg_match($pattern,$subject,$match); //echo $match[0]; print_r($match); 结果是: Array ( [0] => spark@imooc.com ) 就没有[1]了。 为什么呢? 而且,我发现例子里的: $subject = "abcdef"; $pattern = '/a(.*?)d/'; preg_match($pattern, $subject, $matches); print_r($matches); //结果为:Array ( [0] => abcd [1] => bc ) 例子里输出的bc是abcd的中间两个,而我第一个代码输出的com是邮箱的末尾。这是为什么?