首先报个到,以后会多来CSDN的PHP论坛混的,请大家多多关照本人遇到个有点头痛的问题
/^(?=\d)m$/和/^m(?=\d)$/这2个有什么具体区别后者能很好的理解,但是断言在前面却找不到合适的答案,希望大家不惜赐教。

解决方案 »

  1.   

    不好意思,本人是个菜鸟,
    按照上面2位的意思,我测试过,
    $str = "0m";
    $pattern = "/(?=\d)/m";
    preg_match($pattern,$str,$output);
    print_r($output);输出结果Array ( [0] => ) ,由此得出2楼hqaht的结论有点问题$str = "m0";
    $pattern = "/(?=\d)/m";
    preg_match($pattern,$str,$output);
    print_r($output);
    输出结果Array ( [0] => ) ,由此得出3楼fxs_2008的结论 "放前放后一样,只是前面预查后面预查"有点问题能解释的清楚些吗?也许本人没理解到具体含义
      

  2.   


    Lookahead assertions start with (?= .
    Lookbehind assertions start with (?<= .
    <?php
    //
    $subject = 'abc1';
    preg_match_all("/abc(?=\d)/", $subject, $matches);
    var_export($matches);echo "\n";
    //
    $subject = 'abco';
    preg_match_all("/abc(?!\d)/", $subject, $matches);
    var_export($matches);echo "\n";
    //
    $subject = '1abc';
    preg_match_all("/(?<=\d)abc/", $subject, $matches);
    var_export($matches);echo "\n";
    //
    $subject = '123abc';
    //$subject = '000abc';
    //$subject = '999abc';
    preg_match_all("/(?<=\d{3}(?<!000)(?<!999))abc/", $subject, $matches);
    var_export($matches);echo "\n";
    ?>
    好好看手册。
      

  3.   

    谢谢moxie,就不给分了哈 :)