# SubFieldRegEx Funzione per script e grafici

SubFieldRegEx() estrae il testo da un'espressione di stringa di input utilizzando il modello di espressione regolare specificato come delimitatore. La funzione restituisce un valore null se non vengono trovate corrispondenze.

Questa funzione esegue operazioni regex che distinguono tra maiuscole e minuscole. In alternativa, è possibile utilizzare la variante SubFieldRegExI() per eseguire operazioni regex senza distinzione tra maiuscole e minuscole.

Sintassi:

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

Tipo di dati restituiti: stringa

Argomenti

| Argomento | Descrizione |
| --- | --- |
| text | Il testo della stringa di input in cui si desidera cercare il modello di un'espressione regolare. |
| regex\_delimiter | Espressione stringa contenente l'espressione regolare da utilizzare come delimitatore. È possibile specificare più di un delimitatore nello stesso modello di espressione regolare, separandoli con un carattere `\|` (barra verticale). |
| field\_no | Valore intero che indica il numero della suddivisione che si desidera estrarre. Per esempio, specificare il valore `4` per estrarre la quarta suddivisione. Questo argomento è facoltativo.<br><br>Le seguenti indicazioni si applicano indipendentemente dal fatto che la funzione sia utilizzata in uno script di caricamento o in un'espressione del grafico:<br><br><ul> <li> <p>Se <span>field_no</span> è un valore positivo, la funzione restituirà un valore, identificando le corrispondenze da sinistra a destra.</p> </li> <li> <p>Se <span>field_no</span> è un valore negativo, la funzione restituirà un valore, identificando le corrispondenze da destra a sinistra.</p> </li> </ul><br><br>Quando si utilizza la funzione in uno script di caricamento:<br><br><ul> <li> <p>Se si utilizza la funzione <span>SubFieldRegEx()</span> in un'istruzione <span>LOAD</span> e il valore <span>field_no</span> viene omesso, la funzione genera tanti record quante sono le corrispondenze.</p> </li> <li> <p>Se diversi campi vengono caricati utilizzando <span>SubFieldRegEx()</span> e nessuno di essi specifica un argomento <span>field_no</span>, vengono creati i prodotti cartesiani per tutte le combinazioni.</p> </li> </ul><br><br>Quando utilizzare la funzione in un espressione del grafico:<br><br><ul> <li> <p>Se <span>field_no</span> viene omesso, il valore predefinito è <code>1</code>.</p> </li> </ul> |

Esempi di funzioni

| Esempio | Risultato |
| --- | --- |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 1)` | Restituisce `a`. In questo esempio, vengono specificati tre caratteri delimitatori (spazio, virgola e punto e virgola). |
| `SubFieldRegEx('a;b;c;1;2;3',';', 2)` | Restituisce `b`. In questo caso, viene specificato solo un carattere delimitatore (punto e virgola). |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 4)` | Restituisce `1`. |

## Quando usare SubFieldRegEx

È possibile utilizzare SubFieldRegEx() per estrarre più valori singoli da un elenco delimitato. Per esempio, se si dispone di un elenco con i valori separati da virgole all'interno di un blocco più grande di linguaggio naturale, è possibile utilizzare questa funzione per isolare ogni singolo valore dell'elenco in un nuovo record del modello dati.

## Esempio 1 - script di caricamento per separare i tag in base alla transazione

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

#### Script di caricamento e risultati

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* La tabella `Transaction_By_Tag`, che inizialmente contiene i dati della transazione. Questi dati vengono elaborati per estrarre i valori dei singoli tag in nuovi record.

* La creazione di un campo, `TransactionTag`, per memorizzare i valori dei tag estratti.

Nel campo contenente i tag della transazione, più tag sono contenuti in stringhe di testo, separate da delimitatori. Il delimitatore può essere uno dei seguenti caratteri: , | ;

Script di caricamento

```
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;
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* `ID`

* `Product`

* `TransactionTag`

Tabella dei risultati

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

Questo esempio dimostra che, se utilizzata in uno script di caricamento, la funzione SubFieldRegEx() restituisce una riga separata per ogni corrispondenza trovata nella stringa di input.

## Esempio 2 - espressioni dei grafici per separare i tag in base alla transazione

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

#### Script di caricamento e risultati

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* La tabella `Transaction_By_Tag`, che contiene i dati della transazione.

* Un campo, `Tags`, che contiene stringhe di testo per memorizzare tutti i tag associati a una transazione.

Requisiti:

* Nel campo contenente i tag della transazione, più tag sono contenuti in stringhe di testo, separate da delimitatori. Il delimitatore può essere uno dei seguenti caratteri: , | ;

* Bisogna utilizzare le espressioni dei grafici per separare ogni tag nel proprio campo, con un massimo di tre tag da aggiungere a una transazione.

Script di caricamento

```
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');
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* `ID`

* `Tags`

Aggiungere le seguenti dimensioni calcolate:

* 

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

* 

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

* 

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

Tabella dei risultati

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

## Ulteriori informazioni

* [Lavorare con le espressioni regolari negli script di caricamento e nelle espressioni del grafico](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)