是否有从字符串中提取 SQL 查询的正则表达式?我对验证任何 SQL 语法不感兴趣,而只是提取 SQL 命令的选择。这以灵活的方式解析给定的 SQL 文件/字符串。
给出以下 SQL 文件/字符串示例:
SELECT
*
FROM
test_table
WHERE
test_row = 'Testing ; semicolon';
SELECT * FROM another_test_table;
INSERT INTO
table_name
VALUES
(value1,'value which contains semicolon ;;;;',value3,...);
一些伪代码示例是:^(UPDATE|SELECT|INSERT INTO)(.*)(;)$
. 将来我希望用所有(可能的)命令来扩展它。
- 寻找与以下之一的起始匹配: (UPDATE|SELECT|INSERT|INTO)
- 零个或多个
any character
(包括空格和换行符) - 停止于
;
,用于分隔 SQL 查询。
只要通过正则表达式可以做到这一点,以下 java 代码就能够提取所有 SQL 命令:
final String regex = "LOOKING_FOR_THIS_ONE";
final Pattern p = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = p.matcher(content);
while (matcher.find()) {
// matcher.group() now contains the full SQL command
}
提前致谢!