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

SubFieldRegEx() extrai texto de uma expressão de string de entrada, usando o padrão de expressão regular especificado como delimitador. 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 SubFieldRegExI() para realizar operações de regex sem distinção entre maiúsculas e minúsculas.

Sintaxe:

SubFieldRegEx (text, regex\_delimiter [, field\_no])

Tipo de dados de retorno: caractere

Argumentos

| Argumento | Descrição |
| --- | --- |
| text | O texto da string de entrada na qual você deseja procurar um padrão de expressão regular. |
| regex\_delimiter | Expressão de string contendo a expressão regular a ser usada como delimitador. Você pode especificar mais de um delimitador no mesmo padrão de expressão regular, separando-os com um caractere `\|` (tubo vertical). |
| field\_no | Valor inteiro que indica o número da subdivisão que você deseja extrair. Por exemplo, especifique um valor de `4` para extrair a quarta subdivisão. Este é um argumento opcional.<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>SubFieldRegEx()</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>SubFieldRegEx()</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 |
| --- | --- |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 1)` | Retorna `a`. Neste exemplo, são especificados três caracteres delimitadores (espaço, vírgula e ponto e vírgula). |
| `SubFieldRegEx('a;b;c;1;2;3',';', 2)` | Retorna `b`. Nesse caso, apenas um caractere delimitador é especificado (ponto e vírgula). |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 4)` | Retorna `1`. |

## Quando usar SubFieldRegEx

Você pode usar SubFieldRegEx() para extrair vários valores individuais de uma lista delimitada. Por exemplo, se você tiver uma lista separada por vírgulas contida em um bloco maior de linguagem natural, poderá usar esta função para isolar cada valor individual da lista em um novo registro no seu modelo de dados.

## Exemplo 1 – script de carregamento para separar tags por transação

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubFieldRegEx.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 `Transaction_By_Tag`, que inicialmente contém dados de transação. Esses dados são processados para extrair valores de tags individuais em novos registros.

* A criação de um campo, `TransactionTag`, para armazenar os valores de tag extraídos.

No campo que contém as tags de transação, várias tags estão contidas em sequências de texto, separadas por delimitadores. O delimitador pode ser qualquer um dos seguintes caracteres: , | ;

Script de carregamento

```
Transaction_By_Tag:

Load SubFieldRegEx(Tags, ',|;|\|') as TransactionTag,
* Inline [
ID	Product	Tags	Amount
1	Product A	Special order,Eligible for return,Warranty included	100.93
2	Product B	Ineligible for return|No warranty available	51.11
3	Product C	No warranty available	12.83
4	Product B	Special order;Liquidation sale;Warranty included	209.48
] (delimiter is '\t');

drop fields Tags;
```

Resultados

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

* `ID`

* `Product`

* `TransactionTag`

Tabela de resultados

| ID | Product | TransactionTag |
| --- | --- | --- |
| 1 | Product A | Eligible for return |
| 1 | Product A | Warranty included |
| 1 | Product A | Special order |
| 2 | Product B | No warranty available |
| 2 | Product B | Ineligible for return |
| 3 | Product C | No warranty available |
| 4 | Product B | Liquidation sale |
| 4 | Product B | Special order |
| 4 | Product B | Warranty included |

Este exemplo demonstra que, quando usado em um script de carregamento, SubFieldRegEx() retorna uma linha separada para cada correspondência encontrada na string de entrada.

## Exemplo 2 – expressões de gráfico para separar tags por transação

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubFieldRegEx.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 `Transaction_By_Tag`, que contém dados de transação.

* Um campo, `Tags`, que contém sequências de texto para armazenar todas as tags associadas a uma transação.

Nossos requisitos:

* No campo que contém as tags de transação, várias tags estão contidas em sequências de texto, separadas por delimitadores. O delimitador pode ser qualquer um dos seguintes caracteres: , | ;

* Queremos usar expressões de gráfico para separar cada tag em seu próprio campo, com até três tags possíveis para adicionar a uma transação.

Script de carregamento

```
Transaction_By_Tag:

Load * Inline [
ID	Product	Tags	Amount
1	Product A	Special order, Eligible for return, Warranty included	100.93
2	Product B	Ineligible for return | No warranty available	51.11
3	Product C	No warranty available	12.83
4	Product B	Special order;Liquidation sale;Warranty included	209.48
] (delimiter is '\t');
```

Resultados

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

* `ID`

* `Tags`

Adicione estas dimensões calculadas:

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 1)`

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 2)`

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 3)`

Tabela de resultados

| ID | Tags | =SubFieldRegEx(Tags, ',\|;\|\\|', 1) | =SubFieldRegEx(Tags, ',\|;\|\\|', 2) | =SubFieldRegEx(Tags, ',\|;\|\\|', 3) |
| --- | --- | --- | --- | --- |
| 1 | Special order, Eligible for return, Warranty included | Special order | Eligible for return | Warranty included |
| 2 | Ineligible for return \| No warranty available | Ineligible for return | No warranty available | - |
| 3 | No warranty available | No warranty available | - | - |
| 4 | Special order;Liquidation sale;Warranty included | Special order | Liquidation sales | Warranty included |

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