(.*?)   这个匹配是是任意多个字符   为什么不直接(*?)   

解决方案 »

  1.   

    你是想说为什么不用“.*”吧?
    看下面例子:
    $str = 'aabab';
    $pattern1 = '/a.*b/';    //匹配出aabab
    $pattern2 = '/a.*?b/';   //匹配出aab
    $pattern是贪婪模式,$pattern2是非贪婪模式。
    贪婪模式就是最可能多的匹配,如“a.*b”,这里的“.*”就会把字符串中的“aba”都匹配到。
    但非贪婪模式就是尽可能少的匹配,如上面例子,它匹配出的最短的一个以a开头,以b结束的字符串段。
      

  2.   


    谢谢你  $pattern2 = '/a.?b/'; 为什么不这样呢?
      

  3.   


    谢谢你  $pattern2 = '/a.?b/'; 为什么不这样呢?
      

  4.   


    谢谢你  $pattern2 = '/a.?b/'; 为什么不这样呢?
      

  5.   

     $pattern2 = '/a.?b/'; 为什么不这样呢?