Ir para o conteúdo principal
Workday User Guide
Última atualização: 2023-06-23
Grupos de captura de expressão regular

Grupos de captura de expressão regular

Você pode usar parênteses para indicar um subpadrão em uma expressão regular para definir um
grupo
. Você pode usar grupos de expressão regular para:
  • Aplicar operadores de expressão regular e quantificadores a um grupo inteiro de uma vez.
  • Crie um grupo de captura.
    Você pode usar a captura de grupos para especificar valores correspondentes a serem salvos ou retornados por sua expressão regular. Por padrão, um grupo
    captura
    o texto que produz uma correspondência. A parte da cadeia de caracteres que corresponde à subexpressão agrupada é capturada na memória para recuperação ou uso posterior.
  • Crie um grupo que não seja de captura.

Numeração de grupos

Uma expressão regular pode ter mais de um grupo e os grupos podem estar aninhados. Os grupos estão numerados de 1 a
n,
da esquerda para a direita, começando com o primeiro parêntese de abertura. Sempre há um grupo implícito zero (0) que contém a correspondência inteira. Exemplo:
(a(b*))+(c)
Esse padrão contém 3 grupos:
group 1: (a(b*)) group 2: (b*) group 3: (c)

Captura de grupos e a função REGEX

Você pode usar o botão
REGEX
Função para extrair uma parte de uma cadeia de caracteres. O
REGEX
A função retorna o valor apenas do
primeiro
grupo de captura.
Suponha que você tenha um nome de campo chamado
email
que contenha endereços de e-mail com este padrão:
nome de usuário
@
provedor
.
domínio
. Você pode usar o botão
REGEX
Função para retornar apenas a parte do
provedor
do endereço de e-mail do campo
e-mail
:
REGEX([email],"^[a-zA-Z0-9._%+-]+@
([a-zA-Z0-9._-]+)
\.[a-zA-Z]{2,4}$")

Captura de grupos e a função REGEX_REPLACE

Você pode usar o botão
REGEX_REPLACE
para fazer a correspondência de uma cadeia de caracteres e substituir as cadeias de caracteres correspondentes por outro valor. O
REGEX_REPLACE
A função aceita três argumentos:
  • Cadeia de caracteres de entrada
  • Expressão regular correspondente
  • Expressão regular de substituição
Você pode usar a captura de grupos para capturar referências anteriores, mas sempre é retornada toda a correspondência.

Captura de grupos e referências anteriores

Você pode usar uma referência anterior para consultar o conteúdo correspondente de um número de grupo de captura específico. Normalmente, você usa uma referência anterior na mesma expressão regular que contém o grupo de captura. Para especificar uma referência invertida, consulte o número do grupo precedido por uma barra invertida. Uso
\1
para se referir à captura de grupo 1,
\2
para se referir à captura do grupo 2, e assim por diante.
Suponha que você queira fazer a correspondência de um par de etiquetas HTML e o texto incluído. Você pode capturar a etiqueta de abertura em um grupo de captura e, em seguida, usar uma referência anterior para fazer a correspondência da etiqueta de fechamento correspondente:
(
<
([A-Z][A-Z0-9]*)
\b[^>]*>.*?</
\2
>
)
Essa expressão regular contém 2 grupos de captura:
  • O grupo 1 contém os parênteses mais externos e captura a cadeia de caracteres inteira.
  • O grupo 2 captura a cadeia de caracteres correspondente a
    [A-Z][A-Z0-9]*
    .
Você pode fazer referência ao grupo 2 usando o botão
\2
a referência anterior para fazer a correspondência com a etiqueta HTML de fechamento correspondente.
Quando você usa a
REGEX_REPLACE
Função , você pode usar uma referência anterior para fazer referência a um grupo de captura na expressão regular
anterior
. A sintaxe é um pouco diferente quando você usa uma referência anterior para fazer referência a um grupo na expressão regular anterior. Use um sinal de dólar (
$
) antes do número do grupo, como
$1
para especificar uma referência anterior ao grupo 1 da expressão anterior.
Suponha que você tenha um campo
Phone_number
em que os valores são formatados como
xxx.xxx.xxxx
. O exemplo a seguir corresponde os valores em
número de telefone
e os substitui por valores formatados como
(xxx) xxx-xxxx
:
REGEX_REPLACE([phone_number],"([0-9]{3})\.([[0-9]]{3})\.([[0-9]]{4})","
\($1\) $2-$3
")
Observe as referências anteriores na expressão de substituição. Elas se referem aos grupos de captura da expressão de correspondência anterior.

Grupos que não capturam

Em alguns casos, você pode usar parênteses para agrupar subpadrão, mas
não
para capturar texto. Um grupo sem captura começa com
(?:
(um ponto de interrogação e dois pontos após o parêntese de abertura). Por exemplo,
h(?:a|i|o)t
correspondências
hat
ou
hit
ou
hot
, mas não captura os
a
,
i
, ou
o
da subexpressão.