Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja
Dotyczy:
Databricks SQL
Databricks Runtime
Wyodrębnia pierwszy ciąg, str który odpowiada wyrażeniu regexp i odpowiada indeksowi regex grupy.
Składnia
regexp_extract(str, regexp [, idx] )
Argumenty
-
strSTRING: Wyrażenie, które ma być dopasowane. -
regexpSTRING: wyrażenie z pasującym wzorcem. -
idx: opcjonalne wyrażenie liczby całkowitej większej lub równej 0 z wartością domyślną 1.
Zwraca
Klasa STRING.
Jeśli strelement , regexplub idx ma NULLwartość , wynik to NULL.
Jeśli regexp nie pasuje do żadnej części elementu str, wynik jest pustym ciągiem.
Jeśli ogólny wzorzec pasuje, ale grupa określona przez idx nie uczestniczy w dopasowaniu, wynik jest pustym ciągiem.
Ciąg regexp musi być wyrażeniem regularnym Java. Zobacz Java wzorce wyrażeń regularnych aby uzyskać obsługiwaną składnię.
W przypadku używania literałów użyj raw-literal (r prefiksu), aby uniknąć wstępnego przetwarzania znaków ucieczki.
regexp może zawierać wiele grup. Grupy przechwytywania są definiowane przez otaczanie części wzorca w nawiasach (...).
idx wskazuje, która grupa wyrażeń regularnych ma być wyodrębniana.
Wartość idx 0 oznacza dopasowanie całego wyrażenia regularnego.
Wartość domyślna to idx 1, co oznacza, że pierwsza grupa przechwytywania jest zwracana, gdy idx zostanie pominięta.
Jeśli idx wartość jest większa niż liczba grup przechwytywania zdefiniowanych w usłudze regexp, usługa Databricks zgłasza błąd.
Uwzględniane jest tylko pierwsze dopasowanie elementu regexp in str . Aby wyodrębnić wszystkie dopasowania, użyj regexp_extract_all.
Typowe warunki błędów
Przykłady
Wyodrębnianie określonych grup przechwytywania
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
200
Użyj identyfikatora idx 0, aby zwrócić całe dopasowanie
> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
100-200
Domyślny identyfikator to 1
Gdy idx zostanie pominięta, zostanie zwrócona pierwsza grupa przechwytywania.
> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
abc
Brak dopasowania zwraca pusty ciąg
> SELECT regexp_extract('hello world', '(\\d+)', 1);
Dane wejściowe NULL zwracają wartość NULL
> SELECT regexp_extract(NULL, '(\\d+)', 1);
NULL
Użyj nieprzetworzonych literałów ciągów, aby uniknąć podwójnego ucieczki
W zwykłym ciągu SQL ukośniki odwrotne muszą być dwukrotnie (\\d aby oznaczać \d). Użyj prefiksu r dla nieprzetworzonych literałów ciągów, aby pisać wzorce bardziej naturalnie.
> SELECT regexp_extract('abc123', r'(\d+)', 1);
123
Wyodrębnianie domeny z adresu URL
> SELECT regexp_extract('https://www.databricks.com/product', r'https?://([^/]+)', 1);
www.databricks.com
Wyodrębnianie składnika z ciągu daty
> 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
Opcjonalna grupa przechwytywania, która nie uczestniczy w dopasowaniu
Gdy grupa jest opcjonalna i nie jest zgodna, dla tej grupy jest zwracany pusty ciąg.
> SELECT regexp_extract('ac', r'(a)(b)?(c)', 2);
Nieprawidłowy wzorzec wyrażenia regularnego
> SELECT regexp_extract('abc', '[invalid', 0);
Error: INVALID_PARAMETER_VALUE.PATTERN