Freigeben über


regexp_extract-Funktion

Gilt für:durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime

Extrahiert die erste Zeichenfolge in str, die dem Ausdruck regexp und dem Gruppenindex regex entspricht.

Syntax

regexp_extract(str, regexp [, idx] )

Argumente

  • str: Ein STRING-Ausdruck, der abgeglichen werden soll.
  • regexp: Ein STRING-Ausdruck mit einem übereinstimmenden Muster.
  • idx: ein optionaler integraler Zahlenausdruck größer oder gleich 0 mit dem Standardwert 1

Gibt zurück

Ein STRING.

Wenn str, , oder regexp ist idx, ist das Ergebnis NULL. NULL Wenn regexp kein Teil davon strübereinstimmt, ist das Ergebnis eine leere Zeichenfolge. Wenn das Gesamtmuster übereinstimmt, aber die durch idx die angegebene Gruppe nicht an der Übereinstimmung teilnimmt, ist das Ergebnis eine leere Zeichenfolge.

Die Zeichenfolge regexp muss ein Java regulärer Ausdruck sein. Die unterstützte Syntax finden Sie unter Java regex patterns.

Verwenden Sie beim Einsatz von Literalen raw-literal (Präfixr), um die Vorabverarbeitung von Escapezeichen zu vermeiden.

regexp kann mehrere Gruppen enthalten. Erfassungsgruppen werden durch Einschließen eines Teils des Musters in Klammern (...)definiert. idx gibt an, welche RegEx-Gruppe extrahiert werden soll. Eine idx-Angabe von 0 bedeutet, dass nach einer Übereinstimmung mit dem gesamten regulären Ausdruck gesucht werden soll. Der Standardwert von idx 1, d. h. die erste Erfassungsgruppe wird zurückgegeben, wenn idx sie weggelassen wird.

Wenn idx die Anzahl der in regexpDatabricks definierten Erfassungsgruppen größer ist, löst Databricks einen Fehler aus.

Es wird nur die erste Übereinstimmung berücksichtigt regexpstr . Um alle Übereinstimmungen zu extrahieren, verwenden Sie regexp_extract_all.

Häufige Fehlerbedingungen

Beispiele

Extrahieren bestimmter Erfassungsgruppen

> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
 100

> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
 200

Verwenden von idx 0, um die gesamte Übereinstimmung zurückzugeben

> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
 100-200

Standard-IDX ist 1

Wenn idx dieser Parameter nicht angegeben wird, wird die erste Erfassungsgruppe zurückgegeben.

> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
 abc

Keine Übereinstimmung gibt eine leere Zeichenfolge zurück.

> SELECT regexp_extract('hello world', '(\\d+)', 1);

NULL-Eingabe gibt NULL zurück.

> SELECT regexp_extract(NULL, '(\\d+)', 1);
 NULL

Verwenden von unformatierten Zeichenfolgenliteralen, um doppelte Escapezeichen zu vermeiden

In einer regulären SQL-Zeichenfolge müssen umgekehrte Schrägstriche verdoppelt werden (\\d als Mittelwert \d). Verwenden Sie das r Präfix für unformatierte Zeichenfolgenliterale, um Muster natürlicher zu schreiben.

> SELECT regexp_extract('abc123', r'(\d+)', 1);
 123

Extrahieren einer Domäne aus einer URL

> SELECT regexp_extract('https://www.databricks.com/product', r'https?://([^/]+)', 1);
 www.databricks.com

Extrahieren einer Komponente aus einer Datumszeichenfolge

> SELECT regexp_extract('Event on 2024-03-15', r'(\d{4})-(\d{2})-(\d{2})', 0);
 2024-03-15

> SELECT regexp_extract('Event on 2024-03-15', r'(\d{4})-(\d{2})-(\d{2})', 2);
 03

Optionale Erfassungsgruppe, die nicht an der Übereinstimmung teilnimmt

Wenn eine Gruppe optional ist und nicht übereinstimmt, wird für diese Gruppe eine leere Zeichenfolge zurückgegeben.

> SELECT regexp_extract('ac', r'(a)(b)?(c)', 2);

Ungültiges regex-Muster

> SELECT regexp_extract('abc', '[invalid', 0);
  Error: INVALID_PARAMETER_VALUE.PATTERN