我正在运行一个返回类别和子类别数组的查询,这些类别和子类别由i,[digit]或c,[digit]表示。
我已经设法让串联工作替换了i,因此我可以在PHP中针对不同的表运行查询,其中i表示为简单的id。
现在,我想在结果中用c,[x位数]排除任何内容。
我已经设法通过regexPal(伟大的工具!)来运行正则表达式,但似乎无法让它在MySQL中运行。
原始查询
select id, name, (Group_concat(replace(replace(arrange, 'i,', ''), '|', ','))) As
Products from cats
where id = '19'
这个输出是:
c,4331,c,290,c,292,c,282,c,284,c,285,c,4230,c,4228,c,4229,c,298,c,299,c,395,c,396,c,393,c,288,78,81
现在,我将此行添加到查询中:
and arrange not regexp "c,[0-9]{1,10},"
预期的输出是78,81。但我仍然得到上面的全部输出。
提前感谢您的帮助。
答案 0 :(得分:0)
我通过preg_replace的PHP函数修改了这个,而不是使用http://www.phpliveregex.com/上的这个优秀工具
我将查询结果传递给preg_replace,然后执行正确的正则表达式查找以排除字符串的匹配元素。
$ prodsarray2 = preg_replace(“/ c,[0-9] {0,10},/”,“”,$ prodsarray);
所以它是:
NEW STRING = preg_replace(正则表达式,替换文本,查找字符串)