Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Função
Aplica-se a:
Databricks SQL
Databricks Runtime
Extrai a primeira cadeia de caracteres str que corresponde à regexp expressão e corresponde ao índice do regex grupo.
Sintaxe
regexp_extract(str, regexp [, idx] )
Argumentos
-
str: UmaSTRINGexpressão a ser correspondida. -
regexp: UmaSTRINGexpressão com um padrão correspondente. -
idx: Uma expressão numérica integral opcional maior ou igual a 0 com o padrão 1.
Devoluções
Um STRING.
Se str, regexp, ou idx é NULL, o resultado é NULL.
Se regexp não corresponder a nenhuma parte de str, o resultado é uma cadeia vazia.
Se o padrão geral coincidir mas o grupo especificado por idx não participar no jogo, o resultado é uma sequência vazia.
A cadeia regexp deve ser uma expressão regular Java. Veja Java padrões regex para a sintaxe suportada.
Ao usar literais, use raw-literal (r prefixo) para evitar o pré-processamento de caracteres de escape.
regexp pode conter vários grupos. Os grupos de captura são definidos encerrando parte do padrão entre parênteses (...).
idx indica qual grupo regex extrair.
Um idx de 0 significa corresponder a toda a expressão regular.
O valor padrão de idx é 1, o que significa que o primeiro grupo de captura é devolvido quando idx é omitido.
Se idx for maior do que o número de grupos de captura definidos em regexp, Databricks gera um erro.
Apenas o primeiro jogo de regexp em str é considerado. Para extrair todos os fósforos, use regexp_extract_all.
Condições de erro comuns
Exemplos
Extrair grupos de captura específicos
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
200
Usa idx 0 para devolver a partida completa
> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
100-200
O IDX padrão é 1
Quando idx é omitido, o primeiro grupo de captura é devolvido.
> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
abc
Nenhuma correspondência devolve uma cadeia vazia
> SELECT regexp_extract('hello world', '(\\d+)', 1);
A entrada NULL devolve NULL
> SELECT regexp_extract(NULL, '(\\d+)', 1);
NULL
Usa literais de cordas brutas para evitar fuga dupla
Numa string SQL normal, as barras inversas devem ser duplicadas (\\d para significar \d). Usa o r prefixo para literais brutos das cordas para escrever padrões de forma mais natural.
> SELECT regexp_extract('abc123', r'(\d+)', 1);
123
Extrair um domínio de uma URL
> SELECT regexp_extract('https://www.databricks.com/product', r'https?://([^/]+)', 1);
www.databricks.com
Extrair um componente de uma cadeia de datas
> 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
Grupo de captura opcional que não participa na partida
Quando um grupo é opcional e não corresponde, uma cadeia vazia é devolvida para esse grupo.
> SELECT regexp_extract('ac', r'(a)(b)?(c)', 2);
Padrão regex inválido
> SELECT regexp_extract('abc', '[invalid', 0);
Error: INVALID_PARAMETER_VALUE.PATTERN