在PHP中的正则表达式组之间省略文本

时间:2015-05-26 04:20:11

标签: php regex

我希望通过正则表达式捕捉比赛组,但我想省略比赛之间的内容。

示例字符串:

"SELECT * FROM tblItems WHERE [brandID] " + brandID 
        + " AND [categoryID] " + categoryID +
         " AND [description] LIKE '*" + description 
       + "' AND [code] LIKE '*" + code 
       + "' AND [barcode] LIKE '*" + barcode + "'"

我正在尝试匹配 1054 name_lastt (带或不带单引号)

我的正则表达式匹配器如下:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'name_lastt' in 'field list'

我非常接近,但我在数组索引0处得到一个奇怪的,意外的匹配,如下所示:

$pattern = '/(1054)(?:.*(\'\w*\'))/';

我做错了什么?

2 个答案:

答案 0 :(得分:1)

php preg match将添加第一个索引中匹配的整个文本,然后添加另一个

你可以制作array_shift($ matches);移动数组的第一个元素检查手册http://php.net/manual/en/function.array-shift.php

答案 1 :(得分:0)

使用以下正则表达式仅获得您期望的输出。

real    0m2.518s
user    0m2.670s
sys     0m0.153s

DEMO