Nie jestem pewien, czy to w ogóle możliwe. Z pewnością potrzebujesz dogłębnej znajomości składni SQL docelowego systemu DBMS. Na przykład tuż nad moją głową jest to pojedyncze polecenie MySQL:
INSERT INTO things
SELECT * FROM otherthings ON DUPLICATE KEY
UPDATE thingness=thingness+1
Jest prawdopodobne, że w niektórych DBMS istnieją konstrukcje, które bez ogranicznika mogą być niejednoznaczne.
Myślę, że możesz być do tego zmuszony. Jest to całkowicie standardowy sposób ograniczania instrukcji SQL. Nawet jeśli uda Ci się znaleźć heurystykę do wykrywania punktów prawdopodobnie początku instrukcji SQL, ryzykujesz katastrofami, takimi jak przypadkowe „DELETE FROM things”-bez klauzuli WHERE.
Czy wyrażenie podwójnej nowej linii za nową-nową jest dopuszczalne?
Nie, nawet z ograniczniki średników, wyrażenie regularne nie jest wystarczająco wydajne, aby analizować SQL. Punkty problemowe obejmowałyby:
';'
";"
`;`
'\';'
''';'
-- ;
#;
/*;*/
oraz wszelkie wstawienie tych struktur. Eek!