Regulärer Ausdruck zum Extrahieren der SQL-Abfrage

Gibt es einen regulären Ausdruck, der SQL-Abfragen aus einer Zeichenfolge extrahiert? Ich binNICHT interessiert, eine SQL-Syntax zu validieren, und nur eine Auswahl von SQL-Befehlen zu extrahieren. Dies, um eine bestimmte SQL-Datei / Zeichenfolge auf flexible Weise zu analysieren.

Als Beispiel wird die folgende SQL-Datei / Zeichenfolge angegeben:

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,...);

Ein Pseudocode-Beispiel wäre:^(UPDATE|SELECT|INSERT INTO)(.*)(;)$. In Zukunft möchte ich dies mit allen (möglichen) Befehlen erweitern.

Suchen Sie nach einem Start-Match mit: (UPDATE | SELECT | INSERT | INTO)Null oder mehrany character (einschließlich Leerzeichen und Zeilenumbrüche)Halte bei;, das die SQL-Abfrage begrenzt.

Wann immer dies über eine Regex möglich ist, kann der folgende Java-Code alle SQL-Befehle extrahieren:

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
}

Danke im Voraus!

Antworten auf die Frage(5)

Ihre Antwort auf die Frage