我整天都在寻找和寻找解决我的问题的方法,但找不到任何适合我的问题的方法。我有一个需要通过正则表达式“分解”的查询。我想在 where 条件(不检查本身)之后获取选定的字段、表格和字段。
SELECT `a`, `b`, `c` FROM `d` WHERE `e` > 1 OR `d` > 1
我的尝试如下所示:
/SELECT (?<selectedFields>(,*?)\`(.*?)\`) FROM (?<tableName>\`(.*?)\`) WHERE (?<checkFields>\`(.*?)\`)/
我遇到的问题是正则表达式在 where 条件的第一个字段之后停止。我得到的输出如下所示。
Array
(
[0] => Array
(
[0] => SELECT `a`, `b`, `c` FROM `d` WHERE `e`
)
[selectedFields] => Array
(
[0] => `a`, `b`, `c`
)
[1] => Array
(
[0] => `a`, `b`, `c`
)
[2] => Array
(
[0] =>
)
[3] => Array
(
[0] => a`, `b`, `c
)
[tableName] => Array
(
[0] => `d`
)
[4] => Array
(
[0] => `d`
)
[5] => Array
(
[0] => d
)
[checkFields] => Array
(
[0] => `e`
)
[6] => Array
(
[0] => `e`
)
[7] => Array
(
[0] => e
)
)
我需要在我得到所选字段的同一类型的数组中的“checkFields”。我究竟做错了什么?第二件事是正则表达式中的 selectFields 不是预期的每个字段名的数组,它由','分隔......