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

ExtractRegExGroup() extrai texto de uma expressão de string de entrada usando o padrão de expressão regular composta especificado. Ao usar a função, especifique o grupo a ser usado na regex composta. A função retorna um valor nulo se nenhuma correspondência for encontrada.

Se você usar a função ExtractRegExGroup() em uma instrução LOAD, e field\_no for omitido, a função retornará vários registros. Se vários campos forem carregados usando ExtractRegExGroup(), os produtos cartesianos de todas as combinações serão criados.

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

Sintaxe:

ExtractRegExGroup (text, regex, group [, 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. |
| group | O número do grupo, no caso de uma expressão regular composta.<br><br>Se a expressão regular contiver apenas um grupo, use a função ExtractRegEx() em vez disso. Como alternativa, use ExtractRegExGroup() com um valor para group de `0`.<br><br>Você pode especificar um valor negativo em group para pesquisar correspondências da direita para a esquerda. |
| 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.<br><br>Este é um argumento opcional. O padrão é 1 se não for especificado. |

Exemplos de funções

| Exemplo | Resultado |
| --- | --- |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',1)` | Retorna `abc` (primeiro grupo da primeira correspondência). |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',1,2)` | Retorna `def` (primeiro grupo da segunda correspondência). |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',2)` | Retorna `123` (segundo grupo da primeira correspondência). |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',2,2)` | Retorna `456` (segundo grupo da segunda correspondência). |

## 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 analisar códigos de transação

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegExGroup.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 chamada `Transactions`, que contém informações sobre transações. Certos detalhes são capturados com códigos de transação usando a seguinte sintaxe:

  Ano da transação-Fonte da transação (ou seja, compra on-line ou na loja) -Centro de distribuição associado

* A criação de vários campos novos para extrair cada detalhe, cada um reutilizando a mesma expressão regular composta.

Nossos requisitos:

* O ano pode ser qualquer combinação de quatro números.

* Os valores ONLINE e INSTORE são os únicos valores aceitáveis para a fonte da transação.

* O centro de distribuição precisa ter exatamente cinco números.

Script de carregamento

```
Transactions:

Load 
	recno() as RecordID,
	ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',0) as TransactionCode_Unparsed,
	ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',1) as TransactionYear,
	ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',2) as TransactionSource,
	ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',3) as TransactionDC,
* Inline `
TransactionCode, Category
2025-ONLINE-60019, Product A
2024-INSTORE-60020, Product B
2025-ONLINE-60018, Product C
2024-ONLINE-60020, Product A
2025-INSTORE-60019, Product B
2025-ONLINE-60017, Product D
`;
```

Resultados

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

* `RecordID`

* `TransactionCode`

* `TransactionCode_Unparsed`

* `TransactionYear`

* `TransactionSource`

* `TransactionDC`

Tabela de resultados

| RecordID | TransactionCode | TransactionCode\_Unparsed | TransactionYear | TransactionSource | TransactionDC |
| --- | --- | --- | --- | --- | --- |
| 1 | 2025-ONLINE-60019 | 2025-ONLINE-60019 | 2025 | ONLINE | 60019 |
| 2 | 2024-INSTORE-60020 | 2024-INSTORE-60020 | 2024 | INSTORE | 60020 |
| 3 | 2025-ONLINE-60018 | 2025-ONLINE-60018 | 2025 | ONLINE | 60018 |
| 4 | 2024-ONLINE-60020 | 2024-ONLINE-60020 | 2024 | ONLINE | 60020 |
| 5 | 2025-INSTORE-60019 | 2025-INSTORE-60019 | 2025 | INSTORE | 60019 |
| 6 | 2025-ONLINE-60017 | 2025-ONLINE-60017 | 2025 | ONLINE | 60017 |

Esses resultados destacam como o argumento group permite reutilizar uma única regex para várias operações. O campo `TransactionCode_Unparsed`, que usa um valor para group de 0, não fornece nenhum valor adicional nesse caso, mas é mostrado aqui com o objetivo de demonstrar a função.

## Exemplo 2 – script de carregamento para extrair informações de contato comercial

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegExGroup.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 chamada `BusinessContactInfo`, que contém informações sobre empresas que foram encontradas no site de cada empresa.

* `ContactInfo` é um campo que contém texto livre, incluindo endereços de e-mail e números de telefone da empresa.

* A criação de vários campos novos para extrair cada detalhe, cada um reutilizando a mesma expressão regular composta.

Nossos requisitos:

* Os endereços de e-mail devem atender a um conjunto específico de requisitos e sintaxe.

* Números de telefone devem ser números de telefone da NANP com 10 dígitos. Queremos permitir que o código de área seja colocado entre colchetes e permitir espaços em branco e hifens em determinados pontos.

Script de carregamento

```
BusinessContactInfo:

Load
	ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',1,1) as CompanyEmail,
	ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',2,2) as CompanyPhoneNum,
* Inline `
ID	CompanyName	ContactInfo
1	Company A	Email is: Company1@example.com, Phone number is: (123) 456-7890
2	Company B	Email is: company2@test.com, Phone # is: 0123456790
3	Company C	Email is: company3@placeholder.com, Phone no. is: 234-567-8901

` (delimiter is '\t');
```

Resultados

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

* `CompanyName`

* `CompanyEmail`

* `CompanyPhoneNum`

Tabela de resultados

| CompanyName | CompanyEmail | CompanyPhoneNum |
| --- | --- | --- |
| Company A | Company1@example.com | (123) 456-7890 |
| Company B | company2@test.com | 0123456790 |
| Company C | company3@placeholder.com | 234-567-8901 |

A mesma expressão composta regular é reutilizada para recuperar informações diferentes. O argumento group especifica qual dos dois grupos da expressão regular deve ser pesquisado e o argumento field\_no especifica qual correspondência geral (em toda a string) queremos encontrar.

A variante ExtractRegEGroupxI() da função garante pesquisas sem distinção entre maiúsculas e minúsculas.

## Exemplo 3 – script de carregamento para extrair componentes de códigos ISBN

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegExGroup.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:

* A criação de uma variável, `ISBN_RegEx`, para armazenar a expressão regular que queremos usar em todas as extrações.
* Um conjunto de códigos ISBN para livros que uma livraria deseja encomendar de vários fornecedores.

Precisamos extrair o seguinte de cada código ISBN:

* EAN

* Grupo

* Registrante

* Publicação

* Checksum

Script de carregamento

```
SET ISBN_RegEx = 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})';

ISBN:
LOAD Supplier,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',1) AS EAN,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',2) AS Group,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',3) AS Registrant,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',4) AS Publication,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',5) AS Checksum;
// Split the ISBN with the Group function in a preceding load to avoid generating a cartesian product
LOAD *,
ExtractRegEx(SupplierBooks, '$(ISBN_RegEx)') AS Books
INLINE [
Supplier, SupplierBooks
Supplier 1, ISBN 123-3-1234-1234-0 ISBN 012-2-0123-0123-4 ISBN 000-1-0123-0123-2 ISBN 234-5-2345-2345-1 ISBN 555-2-5555-5555-3 ISBN 222-4-2222-2222-2
Supplier 2, ISBN 000-0-3333-3333-3 ISBN 333-3-3333-3333-3 ISBN 555-1-5151-5151-3 ISBN 232-1-2323-2323-1 ISBN 008-0-7777-7777-3 ISBN 888-0-9999-0000-0
];
```

Resultados

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

* `Supplier`

* `EAN`

* `Group`

* `Registrant`

* `Publication`

* `Checksum`

Tabela de resultados

| Supplier | EAN | Group | Registrant | Publication | Checksum |
| --- | --- | --- | --- | --- | --- |
| Supplier 1 | 000 | 1 | 0123 | 0123 | 2 |
| Supplier 1 | 012 | 2 | 0123 | 0123 | 4 |
| Supplier 1 | 123 | 3 | 1234 | 1234 | 0 |
| Supplier 1 | 222 | 4 | 2222 | 2222 | 2 |
| Supplier 1 | 234 | 5 | 2345 | 2345 | 1 |
| Supplier 1 | 555 | 2 | 5555 | 5555 | 3 |
| Supplier 2 | 000 | 0 | 3333 | 3333 | 3 |
| Supplier 2 | 008 | 0 | 7777 | 7777 | 3 |
| Supplier 2 | 232 | 1 | 2323 | 2323 | 1 |
| Supplier 2 | 333 | 3 | 3333 | 3333 | 3 |
| Supplier 2 | 555 | 1 | 5151 | 5151 | 3 |
| Supplier 2 | 888 | 0 | 9999 | 0000 | 0 |

## Exemplo 4 – expressões de gráfico para extrair informações de contato comercial (com comparação de ExtractRegEx())

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegExGroup.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 chamada BusinessContactInfo, que contém informações sobre empresas que foram encontradas no site de cada empresa.

* ContactInfo é um campo que contém texto livre, incluindo endereços de e-mail e números de telefone da empresa. Queremos extrair cada endereço de e-mail e número de telefone com expressões de gráfico.

Nossos requisitos:

* Os endereços de e-mail devem atender a um conjunto específico de requisitos e sintaxe.

* Números de telefone devem ser números de telefone da NANP com 10 dígitos. Queremos permitir que o código de área seja colocado entre colchetes e permitir espaços em branco e hifens em determinados pontos.

Script de carregamento

```
BusinessContactInfo:

Load * Inline `
ID	CompanyName	ContactInfo
1	Company A	Email is: Company1@example.com, Phone number is: (123) 456-7890
2	Company B	Email is: company2@test.com, Phone # is: 0123456790
3	Company C	Email is: company3@placeholder.com, Phone no. is: 234-567-8901

` (delimiter is '\t');
```

Resultados

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

* CompanyName

Adicione as seguintes dimensões calculadas à tabela:

* 

  ```
  =ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',1,1)
  ```

* 

  ```
  =ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',2,2)
  ```

Tabela de resultados

| CompanyName | =ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&\*\-\_+=~{\|}\/.'']{1,50})\|(\({0,1}[0-9]{3}\){0,1}[ -]\*[0-9]{3}[ -]\*[0-9]{4})',1,1) | =ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&\*\-\_+=~{\|}\/.'']{1,50})\|(\({0,1}[0-9]{3}\){0,1}[ -]\*[0-9]{3}[ -]\*[0-9]{4})',2,2) |
| --- | --- | --- |
| Company A | Company1@example.com | (123) 456-7890 |
| Company B | company2@test.com | 0123456790 |
| Company C | company3@placeholder.com | 234-567-8901 |

A mesma expressão composta regular é reutilizada para recuperar informações diferentes. O argumento group especifica qual dos dois grupos da expressão regular deve ser pesquisado e o argumento field\_no especifica qual correspondência geral (em toda a string) queremos encontrar.

A variante ExtractRegEGroupI() da função garante pesquisas sem distinção entre maiúsculas e minúsculas.

## Exemplo 5 – Análise de URL (com comparação de ExtractRegEx())

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegExGroup.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 chamada Correspondence, que contém o texto da mensagem de e-mail em um campo chamado EmailBody.

* Conteúdo de mensagem de e-mail que contém URLs da Web.

Queremos extrair a segunda URL, se presente, nos seguintes componentes:

* URL completa

* Protocolo

* Domínio

* Caminho

Queremos usar uma única expressão regular para controlar toda a extração.

Script de carregamento

```
Correspondence:

Load * Inline `
ID	EmailBody
1	Thanks again for this morning's meeting! You can find the meeting minutes posted here: https://example.com/resourceexample. If you still have any questions, always feel free to ask me or one of the other team members. Here are a few learning resources that might help you: http://www.example.ca/training1.pptx http://www.example.ca/training2.pptx http://www.example.ca/training3.pptx Thanks again!
2	Hi, you'll want to visit our company website for that, it's available at https://www.example.se.
3	Hello all, I just wanted to let you know that our online stores are now up and running! I couldn't be more excited. We are already seeing quite a bit of traffic and volume sold, which is very promising! For Product A, go to https://www.examplestore1.com/products. For Product B, you'll want go to https://www.examplestore2.com/products. Product C, go check out https://www.examplestore3.com/products. Cheers!

` (delimiter is '\t');
```

Resultados

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

* ID

Adicione estas dimensões calculadas:

* URL 2:

  ```
  =ExtractRegEx(EmailBody,'([a-zA-Z0-9]+):\/\/(([a-zA-Z0-9]+\.)*([a-zA-Z0-9]+)\.([a-zA-Z0-9]+))((\/[a-zA-Z0-9]+)*(\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?))?',2)
  ```

* Protocolo da URL 2:

  ```
  =ExtractRegExGroup(EmailBody,'([a-zA-Z0-9]+):\/\/(([a-zA-Z0-9]+\.)*([a-zA-Z0-9]+)\.([a-zA-Z0-9]+))((\/[a-zA-Z0-9]+)*(\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?))?',1,2)
  ```

* Domínio da URL 2:

  ```
  =ExtractRegExGroup(EmailBody,'([a-zA-Z0-9]+):\/\/(([a-zA-Z0-9]+\.)*([a-zA-Z0-9]+)\.([a-zA-Z0-9]+))((\/[a-zA-Z0-9]+)*(\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?))?',2,2)
  ```

* Caminho da URL 2:

  ```
  =ExtractRegExGroup(EmailBody,'([a-zA-Z0-9]+):\/\/(([a-zA-Z0-9]+\.)*([a-zA-Z0-9]+)\.([a-zA-Z0-9]+))((\/[a-zA-Z0-9]+)*(\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?))?',6,2)
  ```

Tabela de resultados

| ID | URL 2 | Protocolo da URL 2 | Domínio da URL 2 | Caminho da URL 2 |
| --- | --- | --- | --- | --- |
| 1 | http://www.example.ca/training1.pptx | http | www.example.ca | /training1.pptx |
| 2 | - | - | - | - |
| 3 | https://www.examplestore2.com/products | https | www.examplestore2.com | /products |

ExtractRegEx() retorna toda a URL, enquanto ExtractRegExGroup() retorna partes individuais da URL, correspondentes ao valor group que usamos. O registro com um valor paraID de 2 contém apenas uma URL, portanto, nenhum dado é retornado para ele.

A mesma expressão regular é usada em todas as expressões de gráfico para retornar diferentes informações. A análise dos grupos definidos na expressão regular é a seguinte.

Grupos em expressão regular

| Número do grupo | Regex | Parte da URL |
| --- | --- | --- |
| 1 | ([a-zA-Z0-9]+) | Protocolo |
| 2 | (([a-zA-Z0-9]+\.)\*([a-zA-Z0-9]+)\.([a-zA-Z0-9]+)) | Domínio (grupos 3, 4 e 5) |
| 3 | ([a-zA-Z0-9]+\.)\* | Domínio raiz |
| 4 | ([a-zA-Z0-9]+) | Domínio de nível superior |
| 5 | ([a-zA-Z0-9]+) | Caminho (grupos 7, 8, 9 e 10) (opcional) |
| 6 | ((\/[a-zA-Z0-9]+)\*(\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?))? | Subdiretório |
| 7 | (\/[a-zA-Z0-9]+)\* | Arquivo (grupos 9 e 10) |
| 8 | (\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?) | Arquivo |
| 9 | ([a-zA-Z0-9]+) | Nome do arquivo |
| 10 | (\.[a-zA-Z0-9]+)? | Extensão do arquivo (opcional) |

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