Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Funkce
Platí pro:
Databricks SQL
Databricks Runtime
Extrahuje první řetězec odpovídající str výrazu regexp a odpovídá indexu regex skupiny.
Syntaxe
regexp_extract(str, regexp [, idx] )
Argumenty
-
str: VýrazSTRING, který se má shodovat. -
regexp: VýrazSTRINGs odpovídajícím vzorem. -
idx: Nepovinný celočíselný číselný výraz větší nebo roven 0 s výchozím číslem 1.
Návraty
Úloha STRING.
Pokud str, regexpnebo idx je NULL, výsledek je NULL.
Pokud regexp neodpovídá žádné části str, výsledek je prázdný řetězec.
Pokud se celkový vzor shoduje, ale skupina zadaná uživatelem idx se do shody nezapojí, výsledek je prázdný řetězec.
Řetězec regexp musí být Java regulárním výrazem. Podporovanou syntaxi najdete v Java vzory regulárních výrazů.
Při použití literálů použijte předzpracováníraw-literal řídicího znaku ( r předpona).
regexp může obsahovat více skupin. Skupiny zachycení jsou definovány uzavřením části vzoru v závorkách (...).
idx určuje, která skupina regulárních výrazů se má extrahovat.
Hodnota idx 0 znamená, že odpovídá celému regulárnímu výrazu.
Výchozí hodnota idx je 1, což znamená, že se při vynechání vrátí idx první skupina zachycení.
Pokud idx je větší než počet skupin zachycení definovaných v regexpnástroji Databricks, vyvolá chybu.
Zvažuje se pouze první shoda regexp in str . Pokud chcete extrahovat všechny shody, použijte regexp_extract_all.
Běžné chybové podmínky
Příklady
Extrahování konkrétních skupin zachycení
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
200
Použití idx 0 k vrácení celé shody
> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
100-200
Výchozí idx je 1
Pokud idx tuto možnost vynecháte, vrátí se první skupina zachycení.
> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
abc
Žádná shoda nevrací prázdný řetězec.
> SELECT regexp_extract('hello world', '(\\d+)', 1);
Vstup NULL vrátí hodnotu NULL.
> SELECT regexp_extract(NULL, '(\\d+)', 1);
NULL
Použití nezpracovaných řetězcových literálů, abyste se vyhnuli dvojitému zapouzdření
V běžném řetězci SQL musí být zpětné lomítka dvojitá (\\d střední \d). Použijte předponu r pro nezpracované řetězcové literály k přirozenějšímu zápisu vzorů.
> SELECT regexp_extract('abc123', r'(\d+)', 1);
123
Extrahování domény z adresy URL
> SELECT regexp_extract('https://www.databricks.com/product', r'https?://([^/]+)', 1);
www.databricks.com
Extrahování komponenty z řetězce kalendářního data
> 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
Volitelná skupina zachycení, která se neshoduje
Pokud je skupina nepovinná a neodpovídá, vrátí se pro tuto skupinu prázdný řetězec.
> SELECT regexp_extract('ac', r'(a)(b)?(c)', 2);
Neplatný vzor regulárního výrazu
> SELECT regexp_extract('abc', '[invalid', 0);
Error: INVALID_PARAMETER_VALUE.PATTERN