# ExtractRegEx Função de script e de gráfico

ExtractRegEx() extrai texto de uma expressão de string de entrada usando o padrão de expressão regular especificado. A função retorna um valor nulo se nenhuma correspondência for encontrada.

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

Sintaxe:

ExtractRegEx (text, regex [, field\_no])

Tipo de dados de retorno: caractere

Argumentos

| Argumento | Descrição |
| --- | --- |
| text | Expressão de string que contém o texto a ser extraído no valor de retorno. |
| regex | A expressão regular a ser usada para extrair o texto. |
| field\_no | O número da correspondência a ser extraída. Isso é útil quando várias correspondências para a expressão regular podem ser encontradas no texto. Por exemplo, especifique um valor de `4` para extrair a quarta correspondência. Este é um argumento opcional. Especifique um valor negativo para inverter a ordem das correspondências.<br><br>Os itens a seguir se aplicam independentemente de a função ser usada em um script de carregamento ou em uma expressão de gráfico:<br><br><ul> <li> <p>Se <span>field_no</span> for positivo, a função retornará um valor, identificando as correspondências da esquerda para a direita.</p> </li> <li> <p>Se <span>field_no</span> for negativo, a função retornará um valor, identificando correspondências da direita para a esquerda.</p> </li> </ul><br><br>Ao usar a função em um script de carregamento:<br><br><ul> <li> <p>Se a função <span>ExtractRegEx()</span> for usada em uma instrução <span>LOAD</span> e <span>field_no</span> for omitido, a função gerará tantos registros quantas forem as correspondências.</p> </li> <li> <p>Se vários campos forem carregados usando <span>ExtractRegEx()</span> e nenhum deles especificar um argumento <span>field_no</span>, os produtos cartesianos de todas as combinações serão criados.</p> </li> </ul><br><br>Ao usar a função em uma expressão de gráfico:<br><br><ul> <li> <p>Se o <span>field_no</span> for omitido, o valor padrão será <code>1</code>.</p> </li> </ul> |

Exemplos de funções

| Exemplo | Resultado |
| --- | --- |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 1)` | Retorna `a`, que é a primeira correspondência encontrada. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 2)` | Retorna `b`, que é a segunda correspondência encontrada. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 4)` | Retorna `1`, que é a quarta correspondência encontrada. |
| `ExtractRegEx('abc','a\|b',-1)` | Retorna `b`. Quando um valor negativo é especificado, as correspondências são contadas de forma inversa. |
| `ExtractRegEx('A,B C;1 2,3','[a-c]\|[4-9]')` | Retorna um valor nulo, pois ExtractRegEx() diferencia maiúsculas de minúsculas e a variante que não diferencia maiúsculas de minúsculas não foi usada. |
| `ExtractRegExI('A,B C;1 2,3','[a-c]\|[4-9]')` | Retorna `A`, porque a variante que não diferencia maiúsculas de minúsculas ExtractRegExI() foi usada. |

## Quando usar

Você pode usar Extract RegEx() para extrair informações que deseja isolar de dados que também podem conter outras informações (por exemplo, texto livre ou strings JSON). Por exemplo:

* Extraia endereços de e-mail, números de telefone, números de conta e outras informações do texto.

* Extraia valores numéricos do texto (por exemplo, moeda).

* Padronize a formatação de dados numéricos ou de texto.

## Exemplo 1 – script de carregamento para extrair endereços de e-mail do JSON

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegEx.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 `OrderDetails` contendo um campo `OrderJson`.

* O campo `OrderJson` contém uma string JSON com dados do pedido. A formatação, como recuo e quebras de linha, foi removida do JSON. Os dados do pedido contêm endereços de e-mail que queremos extrair em valores separados.

* Uma nova tabela `EmailAddresses`, que é carregada após `OrderDetails`. Na instrução `EmailAddresses` LOAD, carregamos o campo `OrderJson` da tabela `OrderDetails` e criamos um novo campo calculado, `Email`, que contém os endereços de e-mail extraídos. `OrderDetails` é então descartado.

Nossos requisitos:

* Endereços de e-mail em um domínio específico: `example.com`.

* Endereços de e-mail que contêm qualquer número de caracteres alfanuméricos, bem como um conjunto definido de caracteres especiais.

Script de carregamento

```
OrderDetails:

Load * Inline `
OrderJson
{"Orders":[{"order_id":"12345","customer":{"name":"John Doe","email":"john.doe@example.com"},"items":{"product":"Laptop","quantity":2,"price":1200},"total_price":2400},{"order_id":"12346","customer":{"name":"Jane Doe","email":"jane.doe@example.com"},"items":{"product":"Tablet","quantity":4,"price":400},"total_price":1600},{"order_id":"12347","customer":{"name":"Amalia Craig","email":"amalia.craig@example.com"},"items":{"product":"Desktop Computer","quantity":1,"price":1900},"total_price":1900},{"order_id":"12348","customer":{"name":"Ken Roberts","email":"ken.roberts@example.com"},"items":{"product":"Phone Charger Cable","quantity":110,"price":1900},"total_price":1210}]}
` (delimiter is '\t');

EmailAddresses:

Load OrderJson, ExtractRegEx(OrderJson, '[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com') as Email Resident OrderDetails;

Drop table OrderDetails;
```

Resultados

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

* `Email`

Tabela de resultados

| Email |
| --- |
| amalia.craig@example.com |
| jane.doe@example.com |
| john.doe@example.com |
| ken.roberts@example.com |

Se você não especificar um valor de argumento para field\_no, todas as correspondências serão extraídas automaticamente em valores separados.

## Exemplo 2 – script de carregamento para extrair valores numéricos de valores monetários

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegEx.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 `Sales` contendo dados de vendas.

* Na tabela `Sales`, um campo chamado `Amount`, que contém os valores das transações em dólares americanos. Esses valores são expressos como strings, que incluem símbolos e códigos de moeda.

* A definição de um campo personalizado em `Sales`, `OrderAmountNumeric_USD`, que extrai cada quantia em um valor puramente numérico. Esses dados precisam estar em formato numérico para que possamos usá-los em agregações de gráficos.

Script de carregamento

```
SET DateFormat='MM-DD-YYYY';

Sales:

Load ExtractRegEx(Amount, '[0-9]+.[0-9]{2}') as OrderAmountNumeric_USD, * Inline `

OrderID, OrderDate, Product, Amount
1, '12-27-2024', Software, $100.31 USD
2, '12-28-2024', Electronics, $513.93 USD
3, '12-29-2024', Grocery, $34.66 USD
4, '12-30-2024', Furniture, $1124.58 USD
5, '12-31-2024', Software, $95.95 USD
6, '01-01-2025', Software, $601.00 USD
7, '01-02-2025', Grocery, $1534.20 USD
8, '01-03-2025', Produce, $51.49 USD
9, '01-04-2025', Home Improvement, $176.12 USD
10, '01-05-2025', Produce, $432.77 USD
11, '01-06-2025', Software, $270.01 USD
12, '01-07-2025', Electronics, $83.85 USD
13, '01-08-2025', Furniture, $65.65 USD
14, '01-09-2025', Electronics, $1526.39 USD
15, '01-10-2025', Software, $432.44 USD
16, '01-11-2025', Furniture, $888.15 USD
17, '01-12-2025', Furniture, $300.00 USD
18, '01-13-2025', Grocery, $109.53 USD
19, '01-14-2025', Furniture, $487.97 USD
20, '01-15-2025', Software, $65.09 USD
`;
```

Resultados

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

* `OrderID`

* `Amount`

* `OrderAmountNumeric_USD`

Tabela de resultados

| OrderID | Amount | OrderAmountNumeric\_USD |
| --- | --- | --- |
| 1 | $100.31 USD | 100.31 |
| 2 | $513.93 USD | 513.93 |
| 3 | $34.66 USD | 34.66 |
| 4 | $1124.58 USD | 1124.58 |
| 5 | $95.95 USD | 95.95 |
| 6 | $601.00 USD | 601.00 |
| 7 | $1534.20 USD | 1534.20 |
| 8 | $51.49 USD | 51.49 |
| 9 | $176.12 USD | 176.12 |
| 10 | $432.77 USD | 432.77 |
| 11 | $270.01 USD | 270.01 |
| 12 | $83.85 USD | 83.85 |
| 13 | $65.65 USD | 65.65 |
| 14 | $1526.39 USD | 1526.39 |
| 15 | $432.44 USD | 432.44 |
| 16 | $888.15 USD | 888.15 |
| 17 | $300.00 USD | 300.00 |
| 18 | $109.53 USD | 109.53 |
| 19 | $487.97 USD | 487.97 |
| 20 | $65.09 USD | 65.09 |

## Exemplo 3 – expressões de gráfico para extrair endereços de e-mail do JSON

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

#### Expressões 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 `OrderDetails` contendo um campo `OrderJson`.

* O campo `OrderJson` contém uma string JSON com dados do pedido. A formatação, como recuo e quebras de linha, foi removida do JSON. Os dados do pedido contêm endereços de e-mail que queremos extrair em valores separados.

Nossos requisitos:

* Endereços de e-mail em um domínio específico: `example.com`.

* Endereços de e-mail que contêm qualquer número de caracteres alfanuméricos, bem como um conjunto definido de caracteres especiais.

Script de carregamento

```
OrderDetails:

Load * Inline `
OrderJson
{"Orders":[{"order_id":"12345","customer":{"name":"John Doe","email":"john.doe@example.com"},"items":{"product":"Laptop","quantity":2,"price":1200},"total_price":2400},{"order_id":"12346","customer":{"name":"Jane Doe","email":"jane.doe@example.com"},"items":{"product":"Tablet","quantity":4,"price":400},"total_price":1600},{"order_id":"12347","customer":{"name":"Amalia Craig","email":"amalia.craig@example.com"},"items":{"product":"Desktop Computer","quantity":1,"price":1900},"total_price":1900},{"order_id":"12348","customer":{"name":"Ken Roberts","email":"ken.roberts@example.com"},"items":{"product":"Phone Charger Cable","quantity":110,"price":1900},"total_price":1210}]}
` (delimiter is '\t');
```

Resultados

Carregue os dados e abra uma pasta. Crie uma tabela e adicione cada uma das seguintes expressões como dimensões calculadas:

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',1)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',2)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',3)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',4)`

Tabela de resultados

| =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',1) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',2) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',3) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',4) |
| --- | --- | --- | --- |
| john.doe@example.com | jane.doe@example.com | amalia.craig@example.com | ken.roberts@example.com |

## Saiba mais

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