Zeichenfolgenfunktionen (reguläre Ausdrücke)

Diese Zeichenfolgenfunktionen führen Operationen aus, die einem regulären Ausdruck entsprechen.

Unter diesem Thema:

Liste der Regex-Funktionen

Funktion

Anmerkungen

REGEXP

Alias für RLIKE.

REGEXP_COUNT

REGEXP_INSTR

REGEXP_LIKE

Alias für RLIKE.

REGEXP_REPLACE

REGEXP_SUBSTR

RLIKE

Allgemeine Nutzungshinweise

Unter diesen Themen bezieht sich „Subjekt“ auf das zu bearbeitende Element und „Muster“ auf den regulären Ausdruck:

  • Das Subjekt ist typischerweise eine variable Spalte, während das Muster typischerweise eine Konstante ist, aber das ist nicht erforderlich. Jedes Argument für eine Funktion mit regulärem Ausdruck kann entweder eine Konstante oder eine Variable sein.

  • Muster unterstützen die vollständige POSIX ERE (Extended Regular Expression)-Syntax. Weitere Informationen dazu finden Sie im Abschnitt Grundfunktionen und erweiterte Funktionen für POSIX (in Wikipedia).

  • Muster unterstützen auch die folgenden Perl-Backslash-Sequenzen:

    • \d: Dezimalstelle (0–9).

    • \D: keine Dezimalstelle.

    • \s: Leerzeichen.

    • \S: kein Leerzeichen.

    • \w: „Wort“-Zeichen (a–z, A–Z, Unterstrich („_“) oder Dezimalziffer).

    • \W: kein Wortzeichen.

    • \b: Wortgrenze.

    • \B: keine Wortgrenze.

    Weitere Informationen dazu finden Sie im Abschnitt Zeichenklassen (in Wikipedia) oder im Abschnitt Backslash-Sequenzen (in der Perl-Dokumentation).

    Beachten Sie, dass das Backslash-Zeichen in Escape-Zeichen eingeschlossen werden muss (d. h. \\ wird zu \). Weitere Informationen dazu finden Sie unter Escape-Zeichen und Einschränkungen (unter diesem Thema).

  • Standardmäßig behandelt das POSIX-Platzhalterzeichen . (im Muster) Zeilenumbruchzeichen \n (im Subjekt) nicht als Übereinstimmung.

    Um auch Zeilenumbrüche abzugleichen, ersetzen Sie entweder . durch (.|\n) im Argument Muster, oder verwenden Sie den Parameter s im Argument Parameter (unten beschrieben).

  • Alle Funktionen des regulären Ausdrucks unterstützen Unicode. Ein einzelnes Unicode-Zeichen zählt immer als ein Zeichen (d. h. das POSIX-Metazeichen . entspricht genau einem Unicode-Zeichen), unabhängig von der Bytelänge der entsprechenden binären Darstellung dieses Zeichens. Auch für Funktionen, die Subjektverschiebungen vornehmen oder zurückgeben, zählt ein einzelnes Unicode-Zeichen als 1.

Parameter

Die meisten Funktionen mit regulären Ausdrücken unterstützen ein optionales Argument Parameter als letzten Eingabewert. Das Argument Parameter ist eine VARCHAR-Zeichenfolge, die das Übereinstimmungsverhalten der Funktion für reguläre Ausdrücke spezifiziert. Die folgenden Parameter werden unterstützt:

Parameter

Effekt

c

Ermöglicht ein Matching, bei dem zwischen Groß- und Kleinschreibung unterschieden wird.

i

Ermöglicht ein Matching, bei dem zwischen Groß- und Kleinschreibung nicht unterschieden wird.

m

Aktiviert den Mehrzeilenmodus (d. h. Metazeichen ^ und $ markieren den Anfang und das Ende einer beliebigen Zeile des Subjekts). Standardmäßig ist der Mehrzeilenmodus deaktiviert (d. h. ^ und $ markieren den Anfang und das Ende des gesamten Subjekts).

e

Extrahiert untergeordnete Matches; gilt nur für REGEXP_INSTR und REGEXP_SUBSTR

s

Aktiviert, dass das POSIX-Platzhalterzeichen ., um \n zu entsprechen. Standardmäßig ist das Platzhaltererzeichen-Matching deaktiviert.

Die Standardzeichenfolge ist einfach c, was Folgendes festlegt:

  • Matching, bei dem zwischen Groß- und Kleinschreibung unterschieden wird

  • Einzeiliger Modus.

  • Keine untergeordnete Matching-Extraktion, mit Ausnahme von REGEXP_REPLACE, das immer eine untergeordnete Matching-Extraktion verwendet.

  • Das POSIX-Platzhalterzeichen . stimmt nicht mit \n-Zeilenumbrüchen überein.

When specifying multiple parameters, the string is entered with no spaces or delimiters. For example, ims specifies case-insensitive matching in multi-line mode with POSIX wildcard matching.

Wenn sowohl c als auch i in der Zeichenfolge Parameter enthalten ist, bestimmt der zuletzt in der Zeichenfolge auftretende Wert, ob die Funktion einen Abgleich unter Beachtung der Groß-/Kleinschreibung vornimmt oder nicht. Beispielsweise gibt ci die Übereinstimmung zwischen Groß- und Kleinschreibung an, da das „i“ als letztes in der Zeichenfolge vorkommt.

Rückverweise

Snowflake unterstützt keine Rückverweise in regulären Ausdrucksmustern (in der Formsprache als „Quadrate“ bekannt); Rückverweise werden jedoch in der Ersetzungszeichenfolge der REGEXP_REPLACE-Funktion unterstützt.

Ausnahmefälle

In den meisten Funktionen für reguläre Ausdrücke stimmt ein leeres Muster (d. h. '') mit nichts überein, nicht einmal mit einem leeren Subjekt.

The exceptions are REGEXP_LIKE and its aliases REGEXP and RLIKE, in which the empty pattern matches the empty subject because the pattern is implicitly anchored at both ends (i.e. '' automatically becomes '^$').

Eine leere Gruppe (d. h. Unterausdruck ()) stimmt mit dem Zwischenraum zwischen den Zeichen überein, einschließlich Anfang und Ende des Subjekts.

Escape-Zeichen und Einschränkungen

Wie vom POSIX-Standard vorgeschrieben, wird das einzelne Backslash-Zeichen \ verwendet, um Metazeichen in Escape-Zeichen einzuschließen (z. B. \* oder \?). Das Backslash-Zeichen wird auch für sogenannte Backslash-Sequenzen (z. B. \w) verwendet.

Beachten Sie, dass das Backslash-Zeichen weiterhin verwendet wird, um Steuerzeichen in SQL -Zeichenfolgen einzufügen (z. B. \n, um eine neue Zeile einzufügen). Um ein einzelnes Backslash-Zeichen in ein SQL-Zeichenfolgenliteral einzufügen, muss das Backslash-Zeichen daher in Escape-Zeichen eingeschlossen werden (d. h. \\ wird zu \).

Um beispielsweise den Rückverweis \1 in ein Ersetzungszeichenfolgenliteral von REGEXP_LIKE einzufügen, müssen Sie möglicherweise \\\\1 verwenden.