我想知道是否有人可以帮助我使用正则表达式 - 而不是我的最强点 - 来解析SQL语句的WHERE部分。我需要以“column”或“table.column”格式提取列名。我正在使用MySQL和PHP。
例如,解析:
(table.column_a = '1') OR (table.column_a = '0'))
AND (date_column < '2014-07-03')
AND column_c LIKE '%my search string%'
应该产生
table.column_a
table.column_b
date_column
column_c
编辑:澄清 - 将使用preg_ *函数在PHP中解析字符串!
谢谢!
答案 0 :(得分:3)
假设你没有在SQL中这样做,你可以使用这样的正则表达式:
[A-Za-z._]+(?=[ ]*(?:[<>=]|LIKE))
请参阅regex demo。
这适用于Notepad ++和许多语言。
<强>解释强>
[A-Za-z._]+
匹配您单词中的字符(如果您想添加数字,请添加0-9
(?=[ ]*(?:[<>=]|LIKE))
断言接下来是可选空格(括号是可选的,它们使空格突出),然后是这个类[<>=]
中的一个字符(运算符OR {{ 1}} |
LIKE
内添加运算符,或者在最后使用其他替换标记它们,例如[<>=]
<强>参考强>