Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Função
Aplica-se a:
SQL do Databricks
Runtime do Databricks
Extrai a primeira cadeia de caracteres em str que corresponde à expressão regexp e ao índice de grupo regex.
Sintaxe
regexp_extract(str, regexp [, idx] )
Argumentos
-
str: uma expressãoSTRINGa ser correspondida. -
regexp: uma expressãoSTRINGcom um padrão correspondente. -
idx: uma expressão de número integral opcional maior ou igual a 0 com o padrão 1.
Retornos
Um STRING.
Se str, regexpou idx for NULL, o resultado for NULL.
Se regexp não corresponder a nenhuma parte, stro resultado será uma cadeia de caracteres vazia.
Se o padrão geral corresponder, mas o grupo especificado por idx não participar da correspondência, o resultado será uma cadeia de caracteres vazia.
A cadeia de caracteres regexp deve ser uma expressão regular Java. Consulte Java padrões regex para obter a sintaxe com suporte.
Ao usar literais, use raw-literal (prefixo r) para evitar o pré-processamento do caractere de escape.
regexp pode conter vários grupos. Os grupos de captura são definidos colocando parte do padrão entre parênteses (...).
idx indica o grupo de regex para extração.
Um idx igual a zero significa uma correspondência de toda a expressão regular.
O valor idx padrão é 1, o que significa que o primeiro grupo de captura é retornado quando idx é omitido.
Se idx for maior que o número de grupos de captura definidos, regexpo Databricks gerará um erro.
Somente a primeira correspondência de regexp entrada str é considerada. Para extrair todas as correspondências, 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
Usar o idx 0 para retornar a correspondência inteira
> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
100-200
O idx padrão é 1
Quando idx é omitido, o primeiro grupo de captura é retornado.
> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
abc
Nenhuma correspondência retorna uma cadeia de caracteres vazia
> SELECT regexp_extract('hello world', '(\\d+)', 1);
A entrada NULL retorna NULL
> SELECT regexp_extract(NULL, '(\\d+)', 1);
NULL
Usar literais de cadeia de caracteres brutos para evitar escape duplo
Em uma cadeia de caracteres SQL regular, as barras invertidas devem ser dobradas (\\d para média \d). Use o r prefixo para literais de cadeia de caracteres brutos para gravar padrões com mais naturalidade.
> 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 caracteres de 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
Grupo de captura opcional que não participa da correspondência
Quando um grupo é opcional e não corresponde, uma cadeia de caracteres vazia é retornada 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