不如说一个字符串里面有"abc def ghi abcdef" 这里指定不匹配abc这个单词其他的"def ghi abcdef"都可以匹配我写的/\b(?!abc)\w+\b/。。只不过 这个有个问题的是以abc开头的单词都不会匹配。。这个正则表达式应该怎么写呢?

解决方案 »

  1.   

    echo  preg_replace('/\babc\b/','',"abc def ghi abcdef");
      

  2.   


    这样真实替换把单词去掉。我使用的是preg_match_all,想把匹配的内容放到数组里面。。
      

  3.   

    既然是匹配def ghi abcdef
    那就把空格也拉进(?!)不行么?
    \b不要滥用
      

  4.   


    不用那么麻烦的~<?php 
    $str = 'abc def ghi abcdef';
    preg_match_all('/\b(?!abc\b)\w+\b/', $str, $matches);
    var_dump($matches);
    ?>输出结果:
    array(1) {
      [0]=>
      array(3) {
        [0]=>
        string(3) "def"
        [1]=>
        string(3) "ghi"
        [2]=>
        string(6) "abcdef"
      }
    }