Expressão regular para extrair consulta SQL
Existe um regex que extrai consultas SQL de uma string? Eu estouNÃO interessado em validar qualquer sintaxe SQL, e apenas extrair uma seleção de comandos SQL. Isso para analisar um determinado arquivo SQL / string de maneira flexível.
Dado é o seguinte arquivo SQL / string exemplo:
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,...);
Algum exemplo de pseudocódigo seria:^(UPDATE|SELECT|INSERT INTO)(.*)(;)$
. No futuro, estou procurando estender isso com todos os comandos possíveis.
any character
(incluindo espaços em branco e novas linhas)Pare em;
, que delimita a consulta SQL.Sempre que isso for possível por meio de um regex, o código java a seguir é capaz de extrair todos os comandos 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
}
Desde já, obrigado!