PHP(正则表达式):从 SQL-Query 中提取列名

PHP (regex): Extract column names from SQL-Query

我正在为 PHP 中的正则表达式苦苦挣扎:

我有很多 SQL 问题。现在,我想提取这些查询中的变量名(列名)。它应该 return 一个数组 (preg_match_all() )

由于查询比较简单,不需要完美的解决方案。我想检查的唯一条件如下:

我正在使用以下在线正则表达式测试器:https://www.phpliveregex.com/#tab-preg-match-all。然而,我得到的最接近的是这个,因为我不知道如何获得多个匹配项:

preg_match_all('/^[where|and|or|\(]* ([a-zA-Z0-1]*)[ |=|<|<=|>|>=|or|in]*.*$/', $input_lines, $output_array);

一些例子SQL-查询:

                                                       SHOULD RETURN
WHERE var1=1 AND var2=1                                => var1; var2
WHERE var2 IN (1, 2, 3) OR var3=2                      => var2; var3
WHERE (var4 like '%test%' and var5 NOT LIKE '%test%')  => var4; var5
WHERE VAR6 = 'test' AnD var7='test2'                   => VAR6; var7

开始吧(当然不是100%完美):

(?:(?i)WHERE|AND|OR) \(?([a-zA-Z0-9]+)

a demo on regex101.com.