REGEXP_SUBSTR_ALL¶
Retorna um ARRAY que contém todas as subcadeias de caracteres que correspondem a uma expressão regular dentro de uma cadeia de caracteres. Se não for encontrada nenhuma correspondência, a função retorna um ARRAY vazio.
- Aliases:
REGEXP_EXTRACT_ALL
Consulte também: Funções de cadeia de caracteres (expressões regulares)
Sintaxe¶
REGEXP_SUBSTR_ALL( <subject> , <pattern> [ , <position> [ , <occurrence> [ , <regex_parameters> [ , <group_num> ] ] ] ] )
Argumentos¶
Obrigatório:
subject
A cadeia de caracteres a ser procurada por correspondências.
pattern
Padrão a atender.
Para diretrizes sobre como especificar padrões, consulte Funções de cadeia de caracteres (expressões regulares).
Opcional:
position
Número de caracteres desde o início da cadeia de caracteres onde a função começa a procurar correspondências.
Padrão:
1
(a busca por uma correspondência começa no primeiro caractere à esquerda)occurrence
Especifica a primeira ocorrência do padrão a partir do qual se começa a retornar as correspondências. A função salta as primeiras
occurrence - 1
correspondências.Por exemplo, se houver
5
correspondências e você especificar3
para o argumentooccurrence
, a função ignorará as duas primeiras correspondências e retornará a terceira, quarta e quinta correspondências.Padrão:
1
regex_parameters
Cadeia de caracteres de um ou mais caracteres que especifica os parâmetros de expressão regular usados para pesquisar correspondências. Os valores aceitos são:
c
: diferencia maiúsculas e minúsculas.i
: não diferencia maiúsculas e minúsculas.m
: modo multilinhas.e
: extrair subcorrespondências.s
: o curinga ‘.’ também corresponde à nova linha.
Para obter mais detalhes, consulte a documentação de parâmetros de expressão regular.
Padrão:
c
Nota
Por padrão, REGEXP_SUBSTR_ALL retorna toda a parte correspondente do assunto. Entretanto, se o parâmetro
e
(para “extrair”) for especificado, REGEXP_SUBSTR_ALL retornará a parte do sujeito que corresponde ao primeiro grupo do padrão. See
for especificado, mas umgroup_num
também não for especificado, então ogroup_num
padrão é 1 (o primeiro grupo). Se não houver subexpressão no padrão, REGEXP_SUBSTR_ALL se comportará como see
não estivesse definido. Para exemplos que usame
, consulte Exemplos neste tópico.group_num
O parâmetro
group_num
especifica o grupo a ser extraído. Os grupos são especificados usando parênteses na expressão regular.Se um
group_num
for especificado, o Snowflake permite a extração mesmo que a opção'e'
também não tenha sido especificada. O'e'
está implícito.O Snowflake oferece suporte a até 1.024 grupos.
Para exemplos que usam
group_num
, consulte Exemplos neste tópico.
Retornos¶
A função retorna um valor do tipo ARRAY. O ARRAY contém um elemento para cada subcadeia de caracteres correspondente.
Se você especificar group_num
e o padrão não especificar um agrupamento com aquele número, a função retorna NULL. Por exemplo, se o padrão especifica apenas um grupo (por exemplo, a(b)c
) e você usa 2
como group_num
, a função retorna NULL.
Notas de uso¶
Para informações adicionais sobre o uso de expressões regulares, consulte Funções de cadeia de caracteres (expressões regulares).
Detalhes do agrupamento¶
Arguments with collation specifications are currently not supported.
Exemplos¶
O padrão no exemplo a seguir corresponde a um “a” minúsculo seguido por um dígito. O exemplo retorna um ARRAY que contém todas as correspondências:
select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]') as matches; +---------+ | MATCHES | |---------| | [ | | "a1", | | "a2", | | "a3", | | "a4", | | "a6" | | ] | +---------+
O exemplo seguinte começa a encontrar correspondências a partir do segundo caractere da cadeia de caracteres (2
):
select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]', 2) as matches; +---------+ | MATCHES | |---------| | [ | | "a2", | | "a3", | | "a4", | | "a6" | | ] | +---------+
O exemplo a seguir começa a retornar correspondências a partir da terceira ocorrência do padrão na cadeia de caracteres (3
):
select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]', 1, 3) as matches; +---------+ | MATCHES | |---------| | [ | | "a3", | | "a4", | | "a6" | | ] | +---------+
O exemplo a seguir realiza uma correspondência que não diferencia maiúsculas e minúsculas (i
):
select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]', 1, 1, 'i') as matches; +---------+ | MATCHES | |---------| | [ | | "a1", | | "a2", | | "a3", | | "a4", | | "A5", | | "a6" | | ] | +---------+
O exemplo a seguir realiza uma correspondência que não diferencia maiúsculas e minúsculas e retorna a parte da cadeia de caracteres que corresponde ao primeiro grupo (ie
):
select regexp_substr_all('a1_a2a3_a4A5a6', '(a)([[:digit:]])', 1, 1, 'ie') as matches; +---------+ | MATCHES | |---------| | [ | | "a", | | "a", | | "a", | | "a", | | "A", | | "a" | | ] | +---------+
O exemplo a seguir demonstra que a função retorna um ARRAY vazio quando não são encontradas correspondências:
select regexp_substr_all('a1_a2a3_a4A5a6', 'b') as matches; +---------+ | MATCHES | |---------| | [] | +---------+