# 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 ExtractRegEx

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/cloud-services/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/cloud-services/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/cloud-services/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/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)