如何找到与正则表达式不匹配的项目
我的表列中有逗号分隔的值,我必须将新值与旧值分开。如何找到与正则表达式不匹配的项目
我的代码是
$a = '1,2,3,4';
$b = '1,2';
if(preg_match("/[^$b]/",$a,$matches)){
print_r($matches);
};
我想找到3,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
使用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
)
)
如果'$ a =='1,2,3,4,10''不起作用。 – 2013-04-08 07:46:43
@Farhad一旦你的值超过9,这将会中断。 – 2013-04-08 07:52:07
@Farhad我解决了这个问题 – 2013-04-08 07:55:14
你真的想正则表达式? – sectus 2013-04-08 07:40:27
背后的逻辑是什么? – DonCallisto 2013-04-08 07:40:43
请说清楚这个代码你想要什么? – 2013-04-08 07:43:31