Função REGEXREPLACE( )
Substitui todas as ocorrências de cadeias que correspondem a uma expressão regular com uma nova cadeia.
Sintaxe
REGEXREPLACE(cadeia; padrão; nova_cadeia)
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
cadeia |
caractere |
O campo, expressão ou valor literal a ser testado por correspondência a um padrão. |
padrão |
caractere |
A cadeia padrão (expressão regular) a ser pesquisada. padrão pode conter caracteres literais, metacaracteres ou uma combinação dos dois. Os caracteres literais incluem todos os caracteres alfanuméricos, alguns caracteres de pontuação, e brancos. A pesquisa diferencia maiúsculas de minúsculas, o que significa que caracteres alfabéticos maiúsculos e minúsculos devem ser especificados explicitamente. |
nova_cadeia | caractere |
A cadeia usada para substituir todos os valores que correspondem ao padrão. A cadeia de substituição pode conter caracteres literais, grupos de caracteres da cadeia original (usando o elemento $int) ou uma combinação dos dois. |
Saída
Caractere.
Exemplos
Exemplos básicos
Trabalho com espaços
Retorna "AB CD EF", substituindo um ou mais espaços entre caracteres de texto por um único espaço:
REGEXREPLACE("AB CD EF"; "\s+"; " ")
Retorna os dados do campo de caracteres com o espaçamento entre as palavras padronizado em um único espaço:
REGEXREPLACE(campo_de_caractere; "\s+"; " ")
Retorna os dados do campo de caractere com o espaçamento entre as palavras padronizado em um único espaço. O uso da função BLANKS( ) em nova_cadeia em vez de um espaço literal, facilita a leitura dos espaços e reduz a possibilidade do espaço passar despercebido:
REGEXREPLACE(campo_de_caractere; "\s+"; BLANKS(1))
Padronização de números de telefone
Retorna "(123) 456-7890". A formatação do número de telefone '1234567890' é padronizada:
REGEXREPLACE(SUBSTR("1234567890";1;14); "(\d{3})[\s-]*(\d{3})[\s-]*(\d{4})";"($1) $2-$3")
Retorna os números no campo Número_Telefone e padroniza a formatação:
REGEXREPLACE(Numero_Telefone; ".*(\d{3})[\s-\.\)]*(\d{3})[\s-\.]*(\d{4})"; "($1) $2-$3")
Extrai "123-456-7890" do texto adjacente:
REGEXREPLACE("Num. tel.: 123-456-7890 (escritório)"; "(.*)(\d{3}[\s-\)\.]*\d{3}[\s-\.]*\d{4})(.*)"; "$2")
Extrai números de telefone do texto adjacente no campo Comentário e padroniza sua formatação:
REGEXREPLACE(Comentário; "(.*)(\d{3})[\s-\)\.]*(\d{3})[\s-\.]*(\d{4})(.*)";"($2) $3-$4")
Identificação de formatos genéricos
Retorna "9XXX-999xx", que representa o formato genérico do valor especificado pela cadeia ("1ABC-123aa"):
REGEXREPLACE(REGEXREPLACE(REGEXREPLACE("1ABC-123aa";"\d";"9");"[a-z]";"x");"[A-Z]"; "X")
Retorna o formato genérico de todos os identificadores do campo Número_Fatura:
REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(NumeroFatura;"\d";"9");"[a-z]";"x");"[A-Z]"; "X")
Padronização do formato de nomes
Retorna "John David Smith":
REGEXREPLACE("Smith, John David"; "^(\w+),(\s\w+)(\s\w+)?(\s\w+)?";"$2$3$4 $1")
Retorna os nomes no campo Nome_Completo na ordem normal: Nome (Meio) (Meio) Sobrenome:
REGEXREPLACE(Nome_Completo; "^(\w+);(\s\w+)(\s\w+)?(\s\w+)?";"$2$3$4 $1")
Nota
Dados de nome podem apresentar várias complicações, como apóstrofos nos nomes. Para considerar todas as variações em dados de nomes, normalmente são necessárias expressões regulares mais complexas que as mostradas no exemplo acima.
Remover marcação HTML
Retorna "https://www.flgov.com/wp-content/uploads/orders/2020/EO_20-166.pdf":
REGEXREPLACE("<a href='https://www.flgov.com/wp-content/uploads/orders/2020/EO_20-166.pdf' target='blank'>https://www.flgov.com/wp-content/uploads/orders/2020/EO_20-166.pdf</a>", "<[^>]*>",' ')
Retorna os hiperlinks no campo Link_URL_Origem com a marcação HTML removida:
REGEXREPLACE(Link_URL_Origem, "<[^>]*>",' ')
Observações
Como funciona?
A função REGEXREPLACE( ) usa uma expressão regular para encontrar padrões correspondentes nos dados e substitui os valores correspondentes por uma nova cadeia.
Por exemplo:
REGEXREPLACE(campo_de_caractere; "\s+"; " ")
padroniza o espaçamento nos dados de caracteres substituindo um ou mais espaços entre caracteres de texto por um único espaço.
A parte de pesquisa de REGEXREPLACE( ) é idêntica à da função REGEXFIND( ). Para obter informações detalhadas sobre os recursos de pesquisa comuns às duas funções, consulte Função REGEXFIND( ).
Quando usar REGEXREPLACE( )
Use REGEXREPLACE( ) sempre que quiser encontrar e substituir dados no Analytics usando correspondência de padrões simples ou complexos.
Substituição de caracteres por eles mesmos
Você pode usar o elemento $int para substituir caracteres por eles mesmos, o que permite preservar as partes significativas dos dados e, ao mesmo tempo, padronizar ou omitir dados adjacentes ou misturados.
Vários exemplos usando números de telefone e nomes estão acima.
Para usar o elemento $int, você deve antes criar grupos usando parênteses ( ) no valor padrão. Para obter mais informações, consulte Função REGEXFIND( ).
Como evitar a correspondência de caracteres sequencial
É possível evitar a correspondência de caracteres sequencial, e substituir subcadeias independentemente da sua posição entre si, aninhando funções REGEXREPLACE( ).
O problema dos dois exemplos abaixo é derivar um formato genérico de dados de origem alfanuméricos em que números e letras podem aparecer em qualquer ordem. Sem saber a ordem dos números e letras, como construir a cadeia padrão?
A solução é encontrar e substituir primeiro os números usando a função REGEXREPLACE( ) interna e depois encontrar e substituir as letras usando a função REGEXREPLACE( ) externa.
Retorna "999XXX":
REGEXREPLACE(REGEXREPLACE("123ABC","\d","9"),"[A-Z]","X")
Retorna "9X9X9X":
REGEXREPLACE(REGEXREPLACE("1A2B3C","\d","9"),"[A-Z]","X")
Comprimento e truncamento da cadeia de substituição
Quando você usa REGEXREPLACE( ) para criar um campo calculado, o comprimento do campo calculado é idêntico ao comprimento do campo original.
Se a cadeia de substituição exceder o comprimento da cadeia de destino, o tamanho total da cadeia aumentará, causando truncamento se o comprimento do campo calculado não puder acomodar o maior tamanho da cadeia.
Os caracteres no final da cadeia de destino são truncados primeiro, seguidos pelos caracteres no final da cadeia de substituição. Os exemplos a seguir demonstram o truncamento:
cadeia |
padrão |
nova_cadeia |
Comprimento do campo |
Resultado |
Caracteres truncados |
---|---|---|---|---|---|
x123x |
123 |
A |
5 |
"xAx" |
nenhum |
x123x |
123 |
ABC |
5 |
"xABCx" |
nenhum |
x123x |
123 |
ABCD |
5 |
"xABCD" |
"x" |
x123x |
123 |
ABCDE |
5 |
"xABCD" |
"x", "E" |
x123x |
123 |
ABCDE |
6 |
"xABCDE" |
"x" |
x123x |
123 |
ABCDE |
7 |
"xABCDEx" |
nenhum |
Como evitar o truncamento
Para evitar o truncamento, use a função SUBSTR( ) para aumentar o comprimento do campo, como demonstrado no segundo exemplo abaixo.
Retorna "xABCD", que trunca o caractere de substituição "E" e o caractere atual "x":
REGEXREPLACE("x123x";"123";"ABCDE")
Retorna "xABCDEx", que inclui todos os caracteres de substituição e os caracteres atuais não substituídos:
REGEXREPLACE(SUBSTR("x123x";1;10);"123";"ABCDE")
Metacaracteres de expressões regulares
A tabela abaixo relaciona os metacaracteres que podem ser usados com REGEXFIND( ) e REGEXREPLACE( ) e descreve a operação executada por cada um deles.
As expressões regulares oferecem sintaxe adicional que conta com o suporte do Analytics, mas que é mais complexa. Uma explicação da sintaxe adicional completa está além do escopo deste guia. Há vários recursos disponíveis na Internet que explicam as expressões regulares.
O Analytics usa a implementação ECMAScript das expressões regulares. A maioria das implementações das expressões regulares usa uma sintaxe central comum.
Nota
A implementação atual das expressões regulares no Analytics não oferece suporte completo a pesquisas em idiomas diferentes do inglês.
Metacaractere |
Descrição |
---|---|
. |
Corresponde a qualquer caractere (exceto o caractere de quebra de linha) |
? |
Corresponde a 0 ou 1 ocorrência do literal, metacaractere ou elemento imediatamente anterior |
* |
Corresponde a 0 ou mais ocorrências do literal, metacaractere ou elemento imediatamente anterior |
+ |
Corresponde a 1 ou mais ocorrências do literal, metacaractere ou elemento imediatamente anterior |
{} |
Corresponde ao número especificado de ocorrências do literal, metacaractere ou elemento imediatamente anterior. Você pode especificar um número exato, um intervalo ou um intervalo aberto. Por exemplo:
|
[] |
Corresponde a qualquer caractere simples dentro dos colchetes Por exemplo:
|
() |
Cria um grupo que define uma sequência ou bloco de caracteres, que pode ser tratada como uma única unidade. Por exemplo:
|
\ |
Caractere de escape que especifica que o caractere a seguir é um literal. Utilize o caractere de escape para corresponder metacaracteres literalmente. Por exemplo, \( encontra um parêntesis esquerdo, e \\ encontra uma barra invertida. Utilize o caractere de escape se quiser corresponder literalmente qualquer um dos caracteres a seguir: ^ $ . * + ? = ! : | \ ( ) [ ] { } Outros caracteres de pontuação, como o e comercial (&) ou arroba (@), não exigem o caractere de escape. |
\int |
Especifica que um grupo, definido previamente com parênteses ( ), é repetido. int é um inteiro que identifica a posição sequencial do grupo previamente definido em relação a todos os outros grupos. Esse metacaractere pode ser usado no parâmetro padrão em REGEXFIND( ) e REGEXREPLACE( ). Por exemplo:
|
$int |
Especifica que um grupo encontrado em uma cadeia de destino é usado em uma cadeia de substituição. int é um inteiro que identifica a posição sequencial do grupo na cadeia de destino em relação a todos os outros grupos. Esse metacaractere pode ser usado apenas no parâmetro nova_cadeia em REGEXREPLACE( ). Por exemplo:
|
| |
Corresponde o caractere, o bloco de caracteres ou a expressão antes ou depois da barra vertical (|) Por exemplo:
|
\w |
Corresponde a qualquer caractere da palavra (a a z, A a Z, 0 a 9 e o caractere sublinhado _ ) |
\W |
Corresponde a qualquer caractere que não é da palavra (diferente de a a z, A a Z, 0 a 9 e do caractere sublinhado _ ) |
\d |
Corresponde a todos os números (qualquer dígito decimal) |
\D |
Corresponde a qualquer caractere que não seja um número (qualquer caractere que não seja um dígito decimal) |
\s |
Corresponde a um espaço (branco) |
\S |
Corresponde a qualquer caractere que não seja um espaço (um caractere não branco) |
\b |
Corresponde a um limite de palavra (entre os caracteres \w e \W) Os limites de palavra não consomem nenhum espaço. Por exemplo:
Dica Além de espaços, os limites de palavra podem resultar de vírgulas, pontos finais e outros caracteres que não são palavras. Por exemplo, a expressão a seguir é avaliada como True: REGEXFIND("jsmith@example.net"; "\bexample\b") |
^ |
Corresponde ao início de uma cadeia Dentro de colchetes, [ ], ^ nega o conteúdo |
$ |
Corresponde ao fim de uma cadeia |
Funções relacionadas
Se você quiser encontrar padrões correspondentes sem substituí-los, use Função REGEXFIND( ).