Php 如何通过正则表达式查找不匹配项
我的表列中有逗号分隔的值,我必须将新值与旧值分隔开 我的代码是Php 如何通过正则表达式查找不匹配项,php,regex,Php,Regex,我的表列中有逗号分隔的值,我必须将新值与旧值分隔开 我的代码是 $a = '1,2,3,4'; $b = '1,2'; if(preg_match("/[^$b]/",$a,$matches)){ print_r($matches); }; 我想找到3,4,但我做不到 使用preg\u match\u all而不是preg\u match $a = '1,2,3,4,10'; $b = '1,2'; if(preg_match_all("/[^
$a = '1,2,3,4';
$b = '1,2';
if(preg_match("/[^$b]/",$a,$matches)){
print_r($matches);
};
我想找到
3,4
,但我做不到 使用preg\u match\u all
而不是preg\u 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
)
)
你真的不应该用正则表达式。PHP具有计算交点的良好功能:
$a = explode(',', '1,2,3,4');
$b = explode(',', '1,2');
print_r(array_values(array_diff($a, $b)));
另见:
请注意,这也适用于以下示例:
$a = '1,2,3,4';
$b = '1,3';
// outcome must be: 2, 4
你真的想要正则表达式吗?背后的逻辑是什么?请明确你想要这段代码做什么?我有一个数据库字段,我必须将新值与旧值分开,并使用正则表达式向新值发送消息,因为它有缺陷,因为数字在字符串上下文中不能很好地工作。@Farhad一旦你的值超过9,它就会中断。现在,
$b=='1,3'
@mohammadmohsenipur将失败,但效率不高或不一致-仅适用于特定的测试用例。$a='1,2,3,4'
和$b='1,3'
的答案应该是'2,4'
@Jon一位反雷格克斯的大使:)不幸的是,有相当多的人>@Farhad不仅“也有效”,这是处理布景的唯一正确方法。@Jack,你说得对。如果$a='1,2,3,4,5,6,7,8,9,10',它也将显示正确的答案,但mohsenipur的另一个答案将不会work@NiekvanderSteen谢谢你扭转你的投票:)想要正则表达式和需要正则表达式不是一回事,在这种情况下会有相当灾难性的结果;我喜欢正则表达式,但知道什么时候不使用是值得的