Regex 用于提取where子句参数化列的正则表达式

Regex 用于提取where子句参数化列的正则表达式,regex,Regex,如何使用正则表达式从下面的sql字符串中提取参数化列: select * from table1 where column1 = ?1 and column2 = 'a' and column3 like ?2 or column3 > ?3 从上述sql正则表达式中,捕获组应返回: column1 = ?1 column3 like ?2 column3 > ?3 我不想使用任何成熟的sql解析器。我所需要的只是要将(,=,像,不像,!=)的列名与参数?1,]\d+ 您

如何使用正则表达式从下面的sql字符串中提取参数化列:

select * from table1 
where column1 = ?1 
and column2 = 'a' 
and column3 like ?2 or column3 > ?3
从上述sql正则表达式中,捕获组应返回:

column1 = ?1
column3 like ?2
column3 > ?3
我不想使用任何成熟的sql解析器。我所需要的只是要将(
=
不像
!=
)的列名与参数
?1
<2
等进行比较。

以下是建议:

(\w+)\s+(?:(not\s+)?like|=|>|<)\s+\?\d+
完整组提取整个条件:

column1 = ?1 
column3 like ?2
column3 > ?3

因为没有理由相信子字符串之间有多个空格,而且因为您说要查找以
开头的参数,所以这是一种为精确性、效率和简洁性而优化的模式:

\w+ (?:[<=>]|!=|(?:not )?like) [?>]\d+
\w+(?:[]|!=(?:不)?喜欢)[?>]\d+

您使用的是什么语言/工具?
\w+ (?:[<=>]|!=|(?:not )?like) [?>]\d+