$ss = "/\[\$?[\w\.]+\]/";
preg_match_all($ss, "[abc]", $mat);//[$abc] [abc]为啥匹都配不到

解决方案 »

  1.   

    $ss = "/\[\\$?[\w]+\]/";
    preg_match_all($ss, '[abc]vv[$def]', $mat);
    print_r($mat);Array
    (
        [0] => Array
            (
                [0] => [abc]
                [1] => [$def]
            ))
      

  2.   

    $ss = "/\[\$?[\w\.]+\]/";
    //等会先解释下我这个
    // \$? 这个的意思不是$出现一次或0次么
      

  3.   

    $ss = "/\[\\$?[\w\.]+\]/";
    //或者
    $ss = '/\[\$?[\w\.]+\]/';
      

  4.   

    csdn一团糟$ss = "/\[\\$?[\w\.]+\]/";
    或者
    $ss = '/\[\$?[\w\.]+\]/';
      

  5.   


    4 楼
    $ss = '/\[\$?[\w\.]+\]/'这个为啥匹配不到[abc]它
      

  6.   

    美圆符$在PHP字串和正则表达式中也是个有特殊意义的字符。如需匹配$的原义字符,就必须写成"\\\$".因为它在双引号里,PHP会将之解析为\$,然后正则解析就会将它匹配为美圆符(而不是表示‘字符串的结束位置’)。美元符号原来这样$ss = '/\[\$?[\w\.]+\]/';
    \$?这样写是不是php就不知道咋办了,这个正则应该是谁也匹配不到了吧
      

  7.   

    \\$两个这个的可以的
    $ss = '/\[\$?[\w\.]+\]/';这个可以匹配谁啊
      

  8.   

    Warning: preg_match_all() [function.preg-match-all]: Compilation failed: nothing to repeat at offset 3 in
    $ss = '/\[\$?[\w\.]+\]/';
    这个正则表达式就不正确
    会给个警告信息的结贴