Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Funktionen
Gäller för:
Databricks SQL
Databricks Runtime
Extraherar den första strängen str i regexp som matchar uttrycket och motsvarar regex gruppindexet.
Syntax
regexp_extract(str, regexp [, idx] )
Argument
-
str: EttSTRINGuttryck som ska matchas. -
regexp: EttSTRINGuttryck med ett matchande mönster. -
idx: Ett valfritt integralnummeruttryck större eller lika med 0 med standardvärdet 1.
Returer
En STRING.
Om str, regexp, eller idx är NULL, blir NULLresultatet .
Om regexp inte matchar någon del av strär resultatet en tom sträng.
Om det övergripande mönstret matchar men gruppen som anges av idx inte deltar i matchningen är resultatet en tom sträng.
Strängen regexp måste vara ett Java reguljärt uttryck. Se Java regex-mönster för syntaxen som stöds.
När du använder literaler använder du raw-literal (r prefix) för att undvika förbearbetning av escape-tecken.
regexp kan innehålla flera grupper. Insamlingsgrupper definieras genom att en del av mönstret omsluts i parenteser (...).
idx anger vilken regexgrupp som ska extraheras.
Ett idx av 0 innebär att matcha hela reguljära uttryck.
Standardvärdet idx för är 1, vilket innebär att den första avbildningsgruppen returneras när idx den utelämnas.
Om idx är större än antalet avbildningsgrupper som definierats i regexpgenererar Databricks ett fel.
Endast den första matchningen av regexp i str beaktas. Om du vill extrahera alla matchningar använder du regexp_extract_all.
Vanliga felvillkor
Exempel
Extrahera specifika insamlingsgrupper
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
200
Använd idx 0 för att returnera hela matchningen
> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
100-200
Standard-idx är 1
När idx utelämnas returneras den första avbildningsgruppen.
> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
abc
Ingen matchning returnerar en tom sträng
> SELECT regexp_extract('hello world', '(\\d+)', 1);
NULL-indata returnerar NULL
> SELECT regexp_extract(NULL, '(\\d+)', 1);
NULL
Använd råa strängliteraler för att undvika dubbel utrymning
I en vanlig SQL-sträng måste omvänt snedstreck fördubblas (\\d till medelvärde \d). Använd prefixet r för råa strängliteraler för att skriva mönster mer naturligt.
> SELECT regexp_extract('abc123', r'(\d+)', 1);
123
Extrahera en domän från en URL
> SELECT regexp_extract('https://www.databricks.com/product', r'https?://([^/]+)', 1);
www.databricks.com
Extrahera en komponent från en datumsträng
> 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
Valfri avbildningsgrupp som inte deltar i matchningen
När en grupp är valfri och inte matchar returneras en tom sträng för den gruppen.
> SELECT regexp_extract('ac', r'(a)(b)?(c)', 2);
Ogiltigt regexmönster
> SELECT regexp_extract('abc', '[invalid', 0);
Error: INVALID_PARAMETER_VALUE.PATTERN