Ich brauche einen regulären Ausdruck, um ALLE Kommentare in einem T-SQL-Block zu erfassen. Der Ausdruck muss mit der .Net Regex-Klasse arbeiten.
Sagen wir, ich habe das folgende T-SQL:
%Vor%Ich muss alle Kommentare aufnehmen, einschließlich der mehrzeiligen Kommentare, damit ich sie entfernen kann.
BEARBEITEN: Es würde dem gleichen Zweck dienen, einen Ausdruck zu haben, der alles außer den Kommentaren aufnimmt.
In PHP benutze ich diesen Code, um SQL auskommentieren (das ist die kommentierte Version - & gt; x Modifikator):
%Vor%Kurze Version:
%Vor%Ich habe diese Funktion gemacht, die alle SQL-Kommentare entfernt, mit einfachen regulären expressons . Es entfernt sowohl Zeilenkommentare (auch wenn kein Zeilenumbruch stattfindet) als auch Kommentare blockieren (selbst wenn es verschachtelte Blockkommentare gibt). Diese Funktion kann auch Literale ersetzen (nützlich, wenn Sie nach etwas innerhalb von SQL-Prozeduren suchen, aber Zeichenfolgen ignorieren möchten).
Mein Code basiert auf dieser Antwort (die sich auf C # -Kommentare bezieht), daher musste ich die Zeilenkommentare ändern "//" zu "-", aber noch wichtiger, ich musste die Blockkommentare regex (mit Auswuchtgruppen ) neu schreiben, weil SQL verschachtelte Blockkommentare erlaubt , während C # doesn t.
Außerdem habe ich dieses Argument " conservePositions ", das anstelle der Kommentare die Kommentare nur mit Leerzeichen füllt. Dies ist nützlich, wenn Sie die ursprüngliche Position jedes SQL-Befehls beibehalten möchten, falls Sie das ursprüngliche Skript bearbeiten und dabei die ursprünglichen Kommentare beibehalten müssen.
%Vor%Test 1 (erstes Original, dann Kommentare entfernen, zuletzt Kommentare / Literale entfernen)
%Vor%Test 2 (erstes Original, dann Kommentare entfernen, zuletzt Kommentare / Literale entfernen)
%Vor%Ich sehe, dass Sie Microsoft SQL Server verwenden (im Gegensatz zu Oracle oder MySQL). Wenn Sie die Regex-Anforderung lockern, ist es jetzt (seit 2012) möglich, den eigenen Parser von Microsoft zu verwenden:
%Vor%Das Folgende funktioniert gut - pg-minify , und zwar nicht nur für PostgreSQL, sondern auch für MS-SQL .
Vermutlich, wenn wir Kommentare entfernen, bedeutet das, dass das Skript nicht mehr zum Lesen ist und es gleichzeitig eine Minimierung ist.
Diese Bibliothek löscht alle Kommentare als Teil der Skriptminimierung.