第一个括号判断“http://”,?表示它出现0或1次
第二个括号判断“http://”之后下一个“/”出现之前的所有字符,+表示不少于一个你尝试一下判断“http://e/e”看看得出什么结果?呵呵

解决方案 »

  1.   

    楼上的二位高手$host = $matches[2];这里为什么写2啊,,,我不懂
      

  2.   

    你可以把$matches数组整个print_r看一下,一看就了解
      

  3.   

    snmr您好^(http:\/\/)?
    匹配的是http://   吧?([^\/]+)我怎么感觉到这匹配的是www.php.net/index.html我理解错在哪,请教
      

  4.   

    snmr啊,我今天才学正则,帮忙,,()如果你不告诉我我真的还不知道,,[]是选择的吧帮忙啦,,我对正则的概念比较模糊
      

  5.   

    那么就去先看看例子再来问例如 $str="today's news";
    [news]匹配什么
    [^news]匹配什么
    (news)匹配什么
    (\news)匹配什么echo "\news"显示什么(这个不是正则)自己先去练一下,这里不是课堂,没人像我这样闲来跟你一问一答的
      

  6.   

    受了教训,得了书经的指引,现已看得透,不再自困。
                沉默是金-张国荣
    snmr_com(麒麟厍人)
    例如 $str="today's news";
    [news]匹配什么
    [^news]匹配什么
    (news)匹配什么
    (\news)匹配什么这些完全理解,不知道变个样会不会还会冒问号。
      

  7.   

    请大家注意 
    [^\/]
    [^/]
    的区别推荐一个极好的工具:
    http://www.regexlab.com/zh/mtracer/