"/(\w+)\s(String|int|datetime|bit)(\sdefault\s\'\w\')?/";[]表示一个字符
()表示多个

解决方案 »

  1.   

    谢谢了,但为什么不能匹配那个default呢?
      

  2.   

    "/(\w+)\s*(String|int|datetime|bit)(\s+default\s+\'\w\')?/";
      

  3.   

    谢谢上面的了
    确实不行,但想应该可以的,不知道为什么不行
    $str = "id int,name String default 'how are you'";$patter2 = "/((\w+)\s(String|int|datetime|bit)(\sdefault\s\'\w\')?)(,+)/";preg_match_all($patter2,$str,$out);print_r($out);
      

  4.   

    当然不行!
    你只能匹配到“,”字符以前,而“default”在“,”之后
      

  5.   

    $str = "id int,name String default 'how are you'";
                  ^____在你的规则串中用什么来匹配这个“,”呢???
      

  6.   

    还有,你用什么来匹配'how are you'中的空格呢?
      

  7.   

    谢谢唠叨了,我变为这样,"/((\w+)\s(String|int|datetime|bit)(\sdefault\s\'.*\')?)(,+)/";
    能取出default 'how are you'但是不能,不能取出how are you不知道为什么