如何找到与正则表达式不匹配的项目

时间:2013-04-08 07:39:05

标签: php regex

我的表格列中有逗号分隔值,我必须将旧值与旧值分开。

我的代码是

    $a = '1,2,3,4';
    $b = '1,2';

    if(preg_match("/[^$b]/",$a,$matches)){
        print_r($matches);
    };

我想找3,4,但我不能这样做。

2 个答案:

答案 0 :(得分:4)

你真的不应该使用正则表达式。 PHP具有很好的函数来计算交叉点:

$a = explode(',', '1,2,3,4');
$b = explode(',', '1,2');

print_r(array_values(array_diff($a, $b)));

另请参阅:array_diff()

请注意,这也适用于以下示例:

$a = '1,2,3,4';
$b = '1,3';

// outcome must be: 2, 4

答案 1 :(得分:-2)

使用preg_match_all代替preg_match

$a = '1,2,3,4,10';
$b = '1,2';
if(preg_match_all("/[^$b](.*)/",$a,$matches)){
    print_r($matches);
};

输出

 Array
(
   [0] => Array
    (
        [0] => 3,4,10
    )

    [1] => Array
    (
        [0] => ,4,10
    )

 )