# ReplaceRegEx – função de script e gráfico

ReplaceRegEx() retorna uma string após substituir uma ou mais correspondências entre uma string de entrada e um padrão de expressão regular especificado. O texto que substitui o texto correspondente é especificado no argumento to\_str. A função funciona da esquerda para a direita, mas, se você especificar um valor occurrence negativo, as funções serão lidas da direita para a esquerda.

Essa função executa operações regex que diferenciam maiúsculas de minúsculas. Como alternativa, você pode usar a variante ReplaceRegExI() para realizar operações de regex sem distinção entre maiúsculas e minúsculas.

Sintaxe:

ReplaceRegEx (text, regex, to\_str [, occurrence])

Tipo de dados de retorno: caractere

Argumentos

| Argumento | Descrição |
| --- | --- |
| text | O texto da string de entrada que você deseja substituir, total ou parcialmente, pelo novo texto de to\_str. |
| regex | A expressão regular que define quando substituir o texto. As correspondências entre esse argumento e o argumento text são substituídas. |
| to\_str | O novo texto que você deseja usar para substituir o conteúdo existente em text. |
| occurrence | O número da correspondência (entre o texto de entrada e a expressão regular) a ser substituída pelo novo texto.<br><br>Este é um argumento opcional. O padrão é 0 se for omitido. Quando um valor de 0 é usado, ou se o argumento for omitido, todas as correspondências entre text e regex são substituídas por to\_str.<br><br>Você pode especificar um valor negativo para occurrence se quiser identificar correspondências da direita para a esquerda. |

Exemplos de funções

| Exemplo | Resultado |
| --- | --- |
| `ReplaceRegEx('abc123','[0-9]','x')` | Retorna `abcxxx`. Nesse exemplo, todo o texto da string de entrada que corresponde ao padrão regex é substituído pelo novo texto. |
| `ReplaceRegEx('abc123','[0-9]','x',1)` | Retorna `abcx23`. Somente a primeira ocorrência de uma correspondência entre a string de entrada e o padrão regex é substituída. |
| `ReplaceRegEx('abc123','[0-9]','x',4)` | Retorna `abc123` . Há apenas três correspondências possíveis entre a string de entrada e o padrão regex, portanto, nenhuma modificação é realizada. |
| `ReplaceRegEx('ABC123','[a-c]','5')` | Retorna `ABC123`. Nenhuma modificação é realizada porque o ReplaceRegEx() diferencia maiúsculas de minúsculas e a variante que não diferencia maiúsculas de minúsculas não é usada. |
| `ReplaceRegExI('ABC123','[a-c]','5')` | Retorna `555123`. A variante da função que não diferencia maiúsculas de minúsculas, ReplaceRegExI(), é usada. |

## Quando usar

Você pode usar o ReplaceRegEx() para modificar texto para atender aos padrões de formatação e conformidade, especialmente quando existem padrões complexos nos dados. Por exemplo, você pode reformatar sequências de números de telefone para que somente valores numéricos sejam incluídos.

Se necessário, você também pode usar esse recurso para mascarar informações confidenciais, como informações de identificação pessoal (PII), para que elas não sejam mostradas aos usuários que analisam seu aplicativo.

## Exemplo 1 – script de carregamento para atualizar os endereços de e-mail dos funcionários

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ReplaceRegEx.htm)

#### Script de carregamento e resultados

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Uma tabela `Employees` contendo os endereços de e-mail dos funcionários de uma organização.

* Criação de um novo campo, `Email_Updated`, para executar uma operação de localização e substituição de valores no campo `Email_Original`.

Depois que a empresa mudou de nome, todos os endereços de e-mail foram atualizados para refletir o novo nome.

Nossos requisitos:

* Converta todas as referências de domínio de `test.com` para `newcompanyname.com`.

* Precisamos usar operações regex que não diferenciam maiúsculas de minúsculas.

Script de carregamento

```
Employees:

Load 
ReplaceRegExI(Email_Original, '@[a-zA-Z0-9.-]*\.?test\.com', '@newcompanyname.com') as Email_Updated,
* Inline [
ID, Email_Original
1, john_doe@test.com
2, jane_doe@test.com
3, Michael_Andrews@test.com
4, charlie_kent@test.com
5, frances_johnson@test.com
6, rebecca_smith@test.com
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `ID`

* `Email_Original`

* `Email_Updated`

Tabela de resultados

| ID | Email\_Original | Email\_Updated |
| --- | --- | --- |
| 1 | john\_doe@test.com | john\_doe@newcompanyname.com |
| 2 | jane\_doe@test.com | jane\_doe@newcompanyname.com |
| 3 | Michael\_Andrews@test.com | Michael\_Andrews@newcompanyname.com |
| 4 | charlie\_kent@support.test.com | charlie\_kent@newcompanyname.com |
| 5 | frances\_johnson@test.com | frances\_johnson@newcompanyname.com |
| 6 | rebecca\_smith@hr.test.com | rebecca\_smith@newcompanyname.com |

## Exemplo 2 – script de carregamento para formatar códigos ISBN

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ReplaceRegEx.htm)

#### Script de carregamento e resultados

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Variáveis `ISBN_13` e `ISBN_10`, que armazenam as expressões regulares a serem usadas para padrões de string de ISBN de 13 e 10 dígitos, respectivamente.

* Uma tabela `Employees` contendo valores numéricos brutos para códigos de livros ISBN. A tabela contém ISBNs de 13 e 10 dígitos.

* Várias operações para extrair cada parte do ISBN e, em seguida, retornar uma string mostrando o código inteiro no formato padrão esperado. Usamos uma combinação de ReplaceRegEx(), MatchRegEx(), ExtractRegExGroup() e Pick().

Nossos requisitos:

* Queremos formatar os números em um texto mais legível, usando o formato padronizado:

  * ISBN ###-#-####-####-#

  * ISBN #-###-#####-#

Script de carregamento

```
Set ISBN_13 = '^([0-9]{3})([0-9]{1})([0-9]{4})([0-9]{4})([0-9]{1})$';
Set ISBN_10 = '^([0-9]{1})([0-9]{3})([0-9]{5})([0-9]{1})$';

Formatted_Codes:

Load
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_13)', '$(ISBN_10)'), ReplaceRegEx(ISBN_Unformatted, '$(ISBN_13)', 'ISBN ' & ISBN_Component1 & '-' & ISBN_Component2 & '-' & ISBN_Component3 & '-' & ISBN_Component4 & '-' & ISBN_Component5), ReplaceRegEx(ISBN_Unformatted, '$(ISBN_10)', 'ISBN ' & ISBN_Component1 & '-' & ISBN_Component2 & '-' & ISBN_Component3 & '-' & ISBN_Component4)) as ISBN_Formatted;

Load *,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 1, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 1, 1)) as ISBN_Component1,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 2, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 2, 1)) as ISBN_Component2,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 3, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 3, 1)) as ISBN_Component3,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 4, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 4, 1)) as ISBN_Component4,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 5, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 5, 1)) as ISBN_Component5
inline `
ISBN_Unformatted
1233123412340
0122012301234
0001012301232
0111234567
5552555555553
2224222222222
1901234568
3333333333333
5551515151513
2321232323231
2444444444
8880999900000
`;
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão:

* `ISBN_Formatted`

Tabela de resultados

| ISBN\_Formatted |
| --- |
| ISBN 000-1-0123-0123-2 |
| ISBN 0-111-23456-7 |
| ISBN 1-901-23456-8 |
| ISBN 2-444-44444-4 |
| ISBN 012-2-0123-0123-4 |
| ISBN 123-3-1234-1234-0 |
| ISBN 222-4-2222-2222-2 |
| ISBN 232-1-2323-2323-1 |
| ISBN 333-3-3333-3333-3 |
| ISBN 555-1-5151-5151-3 |
| ISBN 555-2-5555-5555-3 |
| ISBN 888-0-9999-0000-0 |

## Exemplo 3 – expressão de gráfico para atualizar endereços de e-mail secundários

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ReplaceRegEx.htm)

#### Expressão e resultados do gráfico

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Uma tabela `Employees` contendo os endereços de e-mail dos funcionários de uma organização. Eles são armazenados em uma única string para cada funcionário, na qual são armazenados vários endereços de e-mail.

Nossos requisitos:

* Os endereços de e-mail secundários precisam ser atualizados para usar o domínio `newcompanyname.com`. Não queremos atualizar nenhum endereço de e-mail principal.

* Precisamos usar operações regex que não diferenciam maiúsculas de minúsculas.

Script de carregamento

```
Employees:

Load * Inline [
ID, Emails
1, Primary: john_doe@test.com Secondary: john_michael_doe@example.com
2, Primary: jane_doe@test.com Secondary: jane_tabitha_doe_doe@example.com
3, Primary: Michael_Andrews@test.com Secondary: Michael_John_Andrews@example.com
4, Primary: charlie_kent@test.com Secondary: charlie_peter_kent@example.com
5, Primary: frances_johnson@test.com Secondary: frances_johnson@example.com
6, Primary: rebecca_smith@test.com Secondary: rebecca_danielle_smith@example.com
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `ID`

* `Emails`

Adicione a seguinte dimensão calculada:

```
=ReplaceRegExI(Emails,'@[a-zA-Z0-9.-]*\.?[a-zA-Z0-9]*\.com','@newcompanyname.com',2)
```

Tabela de resultados

| ID | Emails | =ReplaceRegExI(Emails,'@[a-zA-Z0-9.-]\*\.?example\.com','@newcompanyname.com',2) |
| --- | --- | --- |
| 1 | Primary: john\_doe@test.com Secondary: john\_michael\_doe@example.com | Primary: john\_doe@test.com Secondary: john\_michael\_doe@newcompanyname.com |
| 2 | Primary: jane\_doe@test.com Secondary: jane\_tabitha\_doe\_doe@example.com | Primary: jane\_doe@test.com Secondary: jane\_tabitha\_doe\_doe@newcompanyname.com |
| 3 | Primary: Michael\_Andrews@test.com Secondary: Michael\_John\_Andrews@example.com | Primary: Michael\_Andrews@test.com Secondary: Michael\_John\_Andrews@newcompanyname.com |
| 4 | Primary: charlie\_kent@test.com Secondary: charlie\_peter\_kent@example.com | Primary: charlie\_kent@test.com Secondary: charlie\_peter\_kent@newcompanyname.com.com |
| 5 | Primary: frances\_johnson@test.com Secondary: frances\_johnson@example.com | Primary: frances\_johnson@test.com Secondary: frances\_johnson@newcompanyname.com |
| 6 | Primary: rebecca\_smith@test.com Secondary: rebecca\_danielle\_smith@example.com | Primary: rebecca\_smith@test.com Secondary: rebecca\_danielle\_smith@newcompanyname.com |

Ao especificar um valor de 2 para o argumento occurrence, podemos atualizar apenas a segunda instância que corresponde ao padrão regex.

## Saiba mais

* [Trabalhando com expressões regulares em scripts de carregamento e expressões de gráfico](https://help.qlik.com/pt-BR/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)