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.

Procure por uma partida inicial com: (UPDATE | SELECT | INSERT | INTO)Zero ou maisany 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!

questionAnswers(5)

yourAnswerToTheQuestion