# ExtractRegExGroup Funzione per script e grafici

ExtractRegExGroup() estrae il testo dall'espressione di una stringa di input utilizzando il modello di espressione regolare composita specificato. Quando si utilizza la funzione, specificare il gruppo da utilizzare all'interno dell'espressione regolare composita. La funzione restituisce un valore null se non vengono trovate corrispondenze.

Se si utilizza la funzione ExtractRegExGroup() in un'istruzione LOAD e il valore field\_no viene omesso, la funzione restituirà più record. Se diversi campi vengono caricati utilizzando ExtractRegExGroup(), vengono creati i prodotti cartesiani di tutte le combinazioni.

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

Sintassi:

ExtractRegExGroup (text, regex, group [, field\_no])

Tipo di dati restituiti: stringa

Argomenti

| Argomento | Descrizione |
| --- | --- |
| text | L'espressione stringa contenente il testo da estrarre nel valore restituito. |
| regex | L'espressione regolare da utilizzare per estrarre il testo. |
| group | Il numero del gruppo, nel caso di un'espressione regolare composita.<br><br>Se l'espressione regolare contiene solo un gruppo, utilizzare invece la funzione ExtractRegEx(). In alternativa, utilizzare ExtractRegExGroup() con un valore group di `0`.<br><br>È possibile specificare un valore group negativo per cercare le corrispondenze da destra a sinistra. |
| field\_no | Il numero della corrispondenza da estrarre. Questo è utile quando nel testo si possono trovare più corrispondenze per l'espressione regolare. Per esempio, specificare il valore `4` per estrarre la quarta corrispondenza.<br><br>Questo argomento è facoltativo. Se non viene specificata, l'impostazione predefinita è 1. |

Esempi di funzioni

| Esempio | Risultato |
| --- | --- |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',1)` | Restituisce `abc` (primo gruppo della prima corrispondenza). |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',1,2)` | Restituisce `def` (primo gruppo della seconda corrispondenza). |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',2)` | Restituisce `123` (secondo gruppo della prima corrispondenza). |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',2,2)` | Restituisce `456` (secondo gruppo della seconda corrispondenza). |

## Casi di utilizzo

È possibile utilizzare Extract RegEx() per estrarre le informazioni che si desidera isolare dai dati che possono contenere anche altre informazioni (ad esempio, testo libero o stringhe JSON). Ad esempio:

* Estrarre indirizzi e-mail, numeri di telefono, numeri di conto e altre informazioni da un testo.

* Estrarre valori numerici da un testo (ad esempio, la valuta).

* Standardizzare la formattazione dei dati numerici o di testo.

## Esempio 1 - script di caricamento per analizzare i codici delle transazioni

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

* Una tabella denominata `Transactions`, che contiene informazioni sulle transazioni. Alcuni dettagli vengono acquisiti con i codici delle transazioni utilizzando la seguente sintassi:

  Anno della transazione-Origine della transazione (cioè acquisto online o in negozio)-Centro di distribuzione associato

* La creazione di diversi nuovi campi per estrarre ogni dettaglio, ognuno dei quali riutilizza la stessa espressione regolare composita.

Requisiti:

* L'anno può essere una qualsiasi combinazione di quattro numeri.

* I valori ONLINE e INSTORE sono gli unici accettabili per l'origine della transazione.

* Il centro di distribuzione deve avere esattamente cinque numeri.

Script di caricamento

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

Risultati

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

* `RecordID`

* `TransactionCode`

* `TransactionCode_Unparsed`

* `TransactionYear`

* `TransactionSource`

* `TransactionDC`

Tabella dei risultati

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

Questi risultati evidenziano come l'argomento group permette di riutilizzare una singola espressione regex per più operazioni. Il campo `TransactionCode_Unparsed`, che utilizza un valore group di 0, non fornisce alcun valore aggiuntivo in questo caso, ma viene mostrato qui per dimostrare la funzione.

## Esempio 2 - script di caricamento per estrarre le informazioni di contatto dell'azienda

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

* Una tabella denominata `BusinessContactInfo`, che contiene informazioni sulle aziende trovate sul sito web di ciascuna azienda.

* `ContactInfo` è un campo che contiene testo libero, compresi gli indirizzi e-mail e i numeri di telefono dell'azienda.

* La creazione di diversi nuovi campi per estrarre ogni dettaglio, ognuno dei quali riutilizza la stessa espressione regolare composita.

Requisiti:

* Gli indirizzi e-mail devono soddisfare una serie di requisiti e di sintassi specifici.

* I numeri di telefono devono seguire il sistema NANP (piano di numerazione nordamericano), con 10 cifre. Bisogna consentire che il prefisso sia racchiuso tra parentesi, oltre alla presenza di spazi vuoti e trattini in alcuni punti.

Script di caricamento

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

Risultati

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

* `CompanyName`

* `CompanyEmail`

* `CompanyPhoneNum`

Tabella dei risultati

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

La stessa espressione regolare composita viene riutilizzata per recuperare informazioni diverse. L'argomento group specifica quale dei due gruppi dell'espressione regolare ricercare, e l'argomento field\_no specifica quale la corrispondenza complessiva (nell'intera stringa) che si desidera trovare.

La variante ExtractRegEGroupxI() della funzione assicura la ricerca senza distinzione tra maiuscole e minuscole.

## Esempio 3 - script di caricamento per estrarre i componenti dai codici ISBN

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegExGroup.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 creazione di una variabile, `ISBN_RegEx`, per memorizzare l'espressione regolare che si desidera utilizzare per tutte le estrazioni.
* Un set di codici ISBN per i libri che una libreria vuole ordinare da diversi fornitori.

Bisogna estrarre i seguenti valori da ciascun codice ISBN:

* EAN

* Gruppo

* Soggetto registrato

* Pubblicazione

* Checksum

Script di caricamento

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

Risultati

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

* `Supplier`

* `EAN`

* `Group`

* `Registrant`

* `Publication`

* `Checksum`

Tabella dei risultati

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

## Esempio 4 - espressioni dei grafici per estrarre informazioni sui contatti aziendali (con confronto con ExtractRegEx() ).

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

#### Espressione del grafico e risultati

Panoramica

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

Lo script di caricamento contiene:

* Una tabella denominata BusinessContactInfo, che contiene informazioni sulle aziende trovate sul sito web di ciascuna azienda.

* ContactInfo è un campo che contiene testo libero, compresi gli indirizzi e-mail e i numeri di telefono dell'azienda. Bisogna estrarre ogni indirizzo e-mail e numero di telefono con le espressioni dei grafici.

Requisiti:

* Gli indirizzi e-mail devono soddisfare una serie di requisiti e di sintassi specifici.

* I numeri di telefono devono seguire il sistema NANP (piano di numerazione nordamericano), con 10 cifre. Bisogna consentire che il prefisso sia racchiuso tra parentesi, oltre alla presenza di spazi vuoti e trattini in alcuni punti.

Script di caricamento

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

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione:

* CompanyName

Aggiungere la seguente dimensione calcolata alla tabella:

* 

  ```
  =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)
  ```

Tabella dei risultati

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

La stessa espressione regolare composita viene riutilizzata per recuperare informazioni diverse. L'argomento group specifica quale dei due gruppi dell'espressione regolare ricercare, e l'argomento field\_no specifica quale la corrispondenza complessiva (nell'intera stringa) che si desidera trovare.

La variante ExtractRegEGroupI() della funzione assicura la ricerca senza distinzione tra maiuscole e minuscole.

## Esempio 5 - Analisi dell'URL (con confronto con ExtractRegEx() )

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

#### Espressione del grafico e risultati

Panoramica

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

Lo script di caricamento contiene:

* Una tabella denominata Correspondence, che contiene il testo del messaggio e-mail in un campo denominato EmailBody.

* Contenuto del messaggio e-mail che contiene URL web.

Bisogna estrarre il secondo URL, se presente, nei seguenti componenti:

* URL completo

* Protocollo

* Dominio

* Percorso

Bisogna utilizzare un'unica espressione regolare per controllare tutte le estrazioni.

Script di caricamento

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

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione:

* ID

Aggiungere le seguenti dimensioni calcolate:

* 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)
  ```

* Protocollo 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)
  ```

* Dominio 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)
  ```

* Percorso 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)
  ```

Tabella dei risultati

| ID | URL 2 | Protocollo URL 2 | Dominio URL 2 | Percorso 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() restituisce l'intero URL, mentre ExtractRegExGroup() restituisce singole parti dell'URL, corrispondenti al valore group che è stato utilizzato. Il record con un valore per ID uguale a 2 contiene solo un URL, quindi non viene restituito alcun dato.

La stessa espressione regolare viene utilizzata in tutte le espressioni dei grafici per restituire diverse informazioni. La scomposizione dei gruppi definiti nell'espressione regolare è la seguente.

Gruppi nell'espressione regolare

| Numero del gruppo | Regex | Parte URL |
| --- | --- | --- |
| 1 | ([a-zA-Z0-9]+) | Protocollo |
| 2 | (([a-zA-Z0-9]+\.)\*([a-zA-Z0-9]+)\.([a-zA-Z0-9]+)) | Dominio (gruppi 3, 4 e 5) |
| 3 | ([a-zA-Z0-9]+\.)\* | Dominio radice |
| 4 | ([a-zA-Z0-9]+) | Dominio di primo livello |
| 5 | ([a-zA-Z0-9]+) | Percorso (gruppi 7, 8, 9 e 10) (opzionale) |
| 6 | ((\/[a-zA-Z0-9]+)\*(\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?))? | Sottodirectory |
| 7 | (\/[a-zA-Z0-9]+)\* | File (gruppi 9 e 10) |
| 8 | (\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?) | File |
| 9 | ([a-zA-Z0-9]+) | Nome file |
| 10 | (\.[a-zA-Z0-9]+)? | Estensione del file (opzionale) |

## Ulteriori informazioni

* [Utilizzo delle espressioni regolari negli script di caricamento e nelle espressioni dei grafici](https://help.qlik.com/it-IT/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)