2016-07-14 12 views
-1

Hallo Ich arbeite daran, den Unterschied zwischen dem Kerncode zu finden, den meine Firma produziert hat, als Produkt und Code, den unsere Kundendatenbank enthält. Ich mache das mit Beyond Compare. Irgendwann hat unser Client eine andere IDE verwendet, um Code zu betrachten und neu zu kompilieren. Das Problem besteht darin, dass der einzige Unterschied darin besteht, dass die Anweisung create oder replace an Oracle gesendet wird.Schreiben eines regulären Ausdrucks, um SQL-Dateinamen aus verschiedenen Compilern zu ignorieren

So Quelle meines Unternehmens wie folgt aussieht:

erstellen oder ersetzen Trigger "SCHEMA" "TRIGGER_TG_1"

.

erstellen oder Trigger Trigger_tg_1

Und die Kunden zusammengestellt Quelle aussieht ersetzen

Beide sind für Oracle identisch, werden jedoch als Unterschied in Beyond Compare gekennzeichnet. Wie würde ich einen regulären Ausdruck schreiben, um diese Unterschiede zu ignorieren?

+0

Was meinen Sie mit einem regulären Ausdruck, um Unterschiede zu ignorieren? Ermöglicht es Ihnen, einen regexp replace durchzuführen, um die Eingabe vor dem Vergleich in ein gemeinsames Format zu konvertieren? – Barmar

+0

Was hast du probiert? SO ist kein kostenloser Codierdienst. Sie müssen versuchen, das Problem selbst zu lösen, und wenn Sie es nicht funktionieren, post Ihren Versuch und wir werden versuchen, zu helfen. – Barmar

+0

Beyond Compare ermöglicht es Ihnen, "Grammatik" -Regeln zu erstellen, die Unterschiede ignorieren, die bestimmten Kriterien entsprechen. Diese Regeln, die konfiguriert werden können, können einen regulären Ausdruck für die zu ignorierenden Elemente enthalten. Ich habe versucht, alle Zeilen auszuschließen, die mit create oder replace beginnen und nicht mit case übereinstimmen, aber es markiert immer noch die Zeilen, wenn sie den Schemanamen in Anführungszeichen haben. Ich hatte auf eine Regex-Hilfe gehofft, wusste aber nicht, wo ich anfangen sollte. –

Antwort

1

Durch die Einrichtung von zwei Regeln in den Einstellungsregeln für Dateivergleichssitzungen konnte ich dies erreichen.

1) Erstellen Sie einen unwichtigen regulären Textausdruck von^create or replace und 2) Erstellen Sie eine Grammatikregel für eine wichtige Zeile, wenn es mit "create or replace" beginnt und deaktivieren Sie dann diese Regel.

Wenn nur die erste Regel für unwichtigen Text erstellt wird ignoriert es die Zeile nicht und ich bin mir nicht sicher warum.