我见有的是(.*?) 有的又是([\s\S]*?])
[\S\s]为什么这里要放在[]里.能不能解释一下啊.大家.看了教程这里老是看不明白

解决方案 »

  1.   

    1、[\S\s]是匹配\S或\s字符,\S匹配任何非空白字符,\s匹配任何空白字符(空格、制表符等)2、中括号的意思是匹配括号中的任一个字符(注意,只匹配一个字符)3、圆括号是标记一个正则表达式的开始和结束。
      

  2.   


    为什么不是(\s\S*?])  而是([\s\S]*?]) 呢.不太明白.
      

  3.   

    中括号是匹配括号中的一个字符,[\s\S]也就是匹配\s和\S的其中一个,而不是两个。\s\S是匹配\s和\S两个字符。
      

  4.   

    http://blog.sevenight.com/index.php?m=blog&a=show&id=57
      

  5.   

    ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。 
    [  标记一个中括号表达式的开始。要匹配 [,请使用 \[。\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
    \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
    举个例吧,这个我也不懂,经常匹配不到..,哈哈,看下效果好点.
    $data = 'x456n  y45m';
    preg_match_all("/[xyz](.+?)[nm]/i", $data, $match);
    print_r($match);
    输出结果Array
    (
        [0] => Array
            (
                [0] => x456n
                [1] => y45m
            )    [1] => Array
            (
                [0] => 456
                [1] => 45
            ))
    $match[0]为全部模式匹配的数组,也就是整个正则匹配,(包含[]表达式)
    $match[1]为第一个括号中的子模式所匹配的字符串组成的数组,
    就是只有第一个()里的正则匹配出来的,(从上面例子即可看出匹配后的区别了)
    一般都是替换,查找的目标了
    要是多个子表达式()的话,就可能会有$match[2],$match[3]..可能说得有些乱,这些东西用习惯就好.