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.
any 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!