Die unterstützten Regex-Funktionen sind vollständig mit Perl Version 5 kompatibel.
Eine Diskussion der Funktionsweise regulärer Ausdrücke überschreitet den Umfang dieses Dokuments. Weitere Informationen finden Sie in den zahlreichen Dokumenten, die die Erstellung regulärer Ausdrücke für Perl beschreiben.
Die Regex-Funktionen wenden das Regexp-Muster rekursiv auf verschiedene Teile des Eingabewerts an, bis eine der folgenden Bedingungen auftritt:
- Es wird eine Übereinstimmung gefunden; die Funktion gibt den Übereinstimmungswert zurück.
- Es wird keine Übereinstimmung für das Muster an der aktuellen Stelle gefunden; die Funktion wiederholt den Suchvorgang durch Verwendung eines anderen Teils des Musters.
Es besteht ein Rekursionslimit dafür, wie oft die Funktion mit einem neuen Suchmuster wiederholt wird. Im SQL-Toolkit Release 1.3 und höher ist das Limit 10.000.000 Rekursionen, was der allgemein akzeptierte Standardwert ist. (In früheren Releases war das Standardlimit 10.000.)
Wenn das Limit erreicht wird, bevor eine Übereinstimmung gefunden wird, zeigt die Funktion folgenden Fehler an: "ERROR: 0 : Regex exec: Match limit reached, consider rewriting
the pattern."
Das Rekursionslimit beschränkt die Eingabesuchzeichenfolge nicht; es steuert den Aufwand, der betrieben wird, um "extreme" Muster wie verschachtelte, unbegrenzte Muster abzugleichen. Beispiel:
https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(?\S+)))
Das fett hervorgehobene Muster definiert eine Suche zum Abgleichen "mindestens eines Vorkommens von (mindestens einem Vorkommen alphanumerischer Werte)".
Dieses Muster führt zu unnötigen Rekursionen, die bei mittelgroßen bis großen Eingabezeichenfolgen schnell das Limit erreichen können. Ändern Sie das Suchmuster besser in folgende Form:
https?://([-\w\.]+)(:\d+)?(/([\w/_\.]*(?\S+)))