Kategorien:

Zeichenfolgenfunktionen (reguläre Ausdrücke)

REGEXP_SUBSTR_ALL

Gibt ein ARRAY zurück, das alle Teilzeichenfolgen enthält, die mit einem regulären Ausdruck in einer Zeichenfolge übereinstimmen. Wenn keine Übereinstimmung gefunden wird, gibt die Funktion ein leeres ARRAY zurück.

Aliasse:

REGEXP_EXTRACT_ALL

Siehe auch: Zeichenfolgenfunktionen (reguläre Ausdrücke)

Syntax

REGEXP_SUBSTR_ALL( <subject> , <pattern> [ , <position> [ , <occurrence> [ , <regex_parameters> [ , <group_num> ] ] ] ] )

Argumente

Benötigt:

Subjekt

Die Zeichenfolge, nach der gesucht werden soll.

Muster

Abzugleichendes Muster.

Richtlinien zur Angabe von Mustern finden Sie unter Zeichenfolgenfunktionen (reguläre Ausdrücke).

Optional:

Position

Anzahl der Zeichen ab dem Anfang der Zeichenfolge, an dem die Funktion mit der Suche nach Übereinstimmungen beginnt.

Standard: 1 (die Suche nach einer Übereinstimmung beginnt beim ersten Zeichen links)

Vorkommen

Gibt das erste Auftreten des Musters an, ab dem Übereinstimmungen zurückgegeben werden sollen. Die Funktion überspringt die ersten occurrence - 1 Übereinstimmungen.

Wenn es beispielsweise 5 Übereinstimmungen gibt und Sie 3 für das occurrence-Argument angeben, ignoriert die Funktion die ersten beiden Übereinstimmungen und gibt die dritte, vierte und fünfte Übereinstimmung zurück.

Standard: 1

RegAusdr-Parameter

Zeichenfolge aus einem oder mehreren Zeichen, in der die Parameter angegeben sind, die zur Suche nach Übereinstimmungen verwendet werden. Folgende Werte werden unterstützt:

  • c: Groß-/Kleinschreibung wird unterschieden.

  • i: Groß-/Kleinschreibung wird nicht unterschieden.

  • m: Mehrzeiliger Modus.

  • e: Teilübereinstimmungen werden extrahiert.

  • s: Der Platzhalter „.“ stimmt auch mit Zeilenumbruchzeichen überein.

Weitere Informationen dazu finden Sie in der Dokumentation zu Parameter für reguläre Ausdrücke.

Standard: c

Bemerkung

Standardmäßig gibt REGEXP_SUBSTR_ALL den gesamten übereinstimmenden Teil des Subjekts zurück. Wenn jedoch der Parameter e (für „extrahieren“) angegeben ist, gibt REGEXP_SUBSTR_ALL nur den Teil des Subjekts zurück, der mit der ersten Gruppe im Muster übereinstimmt. Wenn zwar e, aber keine Gruppennummer angegeben ist, ist die Gruppennummer standardmäßig 1 (die erste Gruppe). Wenn das Muster keinen Teilausdruck enthält, verhält sich REGEXP_SUBSTR_ALL so, als wäre e nicht gesetzt. Beispiele, die e verwenden, finden Sie im Abschnitt Beispiele (unter diesem Thema).

Gruppennummer

Der Parameter Gruppennummer gibt an, welche Gruppe extrahiert werden soll. Gruppen werden im regulären Ausdruck mithilfe von Klammern angegeben.

Wenn eine Gruppennummer angegeben ist, ermöglicht Snowflake das Extrahieren, auch wenn die Option 'e' nicht angegeben wurde. Das 'e' ist impliziert.

Snowflake unterstützt bis zu 1.024 Gruppen.

Beispiele, die Gruppennummer verwenden, finden Sie im Abschnitt Beispiele (unter diesem Thema).

Rückgabewerte

Gibt einen Wert vom Typ ARRAY zurück. Das ARRAY enthält ein Element für jede übereinstimmende Teilzeichenfolge.

Wenn Sie Gruppennummer angeben und das Muster aber keine Gruppierung mit dieser Nummer enthält, gibt die Funktion NULL zurück. Wenn das Muster zum Beispiel nur eine Gruppe angibt (z.B. a(b)c) und Sie 2 als Gruppennummer verwenden, gibt die Funktion NULL zurück.

Nutzungshinweise

Weitere Informationen zur Verwendung regulärer Ausdrücke finden Sie unter Zeichenfolgenfunktionen (reguläre Ausdrücke).

Sortierungsdetails

Arguments with collation specifications are currently not supported.

Beispiele

Das Muster im folgenden Beispiel stimmt mit einem kleinen „a“ gefolgt von einer Ziffer überein. Das Beispiel gibt ein ARRAY zurück, das alle Übereinstimmungen enthält:

select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]') as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a1", |
|   "a2", |
|   "a3", |
|   "a4", |
|   "a6"  |
| ]       |
+---------+

Im folgenden Beispiel beginnt die Suche nach Übereinstimmungen mit dem zweiten Zeichen der Zeichenfolge (2):

select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]', 2) as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a2", |
|   "a3", |
|   "a4", |
|   "a6"  |
| ]       |
+---------+

Das folgende Beispiel beginnt mit der Rückgabe von Übereinstimmungen ab dem dritten Auftreten des Musters in der Zeichenfolge (3):

select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]', 1, 3) as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a3", |
|   "a4", |
|   "a6"  |
| ]       |
+---------+

Im folgenden Beispiel wird eine Übereinstimmung ohne Berücksichtigung der Groß-/Kleinschreibung gesucht (i):

select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]', 1, 1, 'i') as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a1", |
|   "a2", |
|   "a3", |
|   "a4", |
|   "A5", |
|   "a6"  |
| ]       |
+---------+

Im folgenden Beispiel wird eine Übereinstimmung ohne Berücksichtigung der Groß-/Kleinschreibung gesucht und der Teil der Zeichenfolge zurückgegeben, der mit der ersten Gruppe (ie) übereinstimmt:

select regexp_substr_all('a1_a2a3_a4A5a6', '(a)([[:digit:]])', 1, 1, 'ie') as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a",  |
|   "a",  |
|   "a",  |
|   "a",  |
|   "A",  |
|   "a"   |
| ]       |
+---------+

Das folgende Beispiel zeigt, dass die Funktion ein leeres ARRAY zurückgibt, wenn keine Übereinstimmungen gefunden werden:

select regexp_substr_all('a1_a2a3_a4A5a6', 'b') as matches;
+---------+
| MATCHES |
|---------|
| []      |
+---------+
Zurück zum Anfang