# ExtractRegEx Funzione per script e grafici

ExtractRegEx() estrae il testo da un'espressione di stringa di input utilizzando il modello di espressione regolare specificato. 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 ExtractRegExI() per eseguire operazioni regex senza distinzione tra maiuscole e minuscole.

Sintassi:

ExtractRegEx (text, regex [, 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. |
| 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. Questo argomento è facoltativo. Specificare un valore negativo per invertire l'ordine delle corrispondenze.<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>ExtractRegEx()</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>ExtractRegEx()</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 |
| --- | --- |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 1)` | Restituisce `a`, che è la prima corrispondenza trovata. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 2)` | Restituisce `b`, che è la seconda corrispondenza trovata. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 4)` | Restituisce `1`, che è la quarta corrispondenza trovata. |
| `ExtractRegEx('abc','a\|b',-1)` | Restituisce `b`. Quando viene specificato un valore negativo, le corrispondenze vengono conteggiate alla rovescia. |
| `ExtractRegEx('A,B C;1 2,3','[a-c]\|[4-9]')` | Restituisce un valore null, perché ExtractRegEx() fa distinzione tra maiuscole e minuscole, e non è stata utilizzata la variante che non le distingue. |
| `ExtractRegExI('A,B C;1 2,3','[a-c]\|[4-9]')` | Restituisce `A`, perché è stata utilizzata la variante ExtractRegExI() che non fa distinzione tra maiuscole e minuscole. |

## 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 estrarre gli indirizzi e-mail da JSON

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegEx.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 `OrderDetails` contenente un campo `OrderJson`.

* Il campo `OrderJson` contiene una stringa JSON con i dati dell'ordine. La formattazione, come l'indentazione e le interruzioni di riga, è stata rimossa dal JSON. I dati dell'ordine contengono indirizzi e-mail che bisogna estrarre in valori separati.

* Una nuova tabella `EmailAddresses`, che viene caricata dopo `OrderDetails`. Nell'istruzione `EmailAddresses` LOAD, è necessario caricare il campo `OrderJson` dalla tabella `OrderDetails` e creare un nuovo campo calcolato, `Email`, che contiene gli indirizzi e-mail estratti. Il valore `OrderDetails` viene quindi eliminato.

Requisiti:

* Indirizzi e-mail in un dominio specifico: `example.com`.

* Indirizzi e-mail che contengono un numero qualsiasi di caratteri alfanumerici, oltre a una serie definita di caratteri speciali.

Script di caricamento

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

Risultati

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

* `Email`

Tabella dei risultati

| Email |
| --- |
| amalia.craig@example.com |
| jane.doe@example.com |
| john.doe@example.com |
| ken.roberts@example.com |

Se non si specifica un valore per l'argomento di field\_no, tutte le corrispondenze vengono estratte automaticamente in valori separati.

## Esempio 2 - script di caricamento per estrarre i valori numerici dagli importi in valuta

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegEx.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 `Sales` contenente i dati delle vendite.

* All'interno della tabella `Sales`, un campo denominato `Amount`, che contiene gli importi delle transazioni in USD. Questi importi sono espressi come stringhe, che includono simboli e codici di valuta.

* La definizione di un campo personalizzato all'interno di `Sales`, `OrderAmountNumeric_USD`, che estrae ogni importo in un valore puramente numerico. Questi dati devono essere in forma numerica, in modo da poterli utilizzare nelle aggregazioni dei grafici.

Script di caricamento

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

Risultati

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

* `OrderID`

* `Amount`

* `OrderAmountNumeric_USD`

Tabella dei risultati

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

## Esempio 3 - espressioni dei grafici per estrarre gli indirizzi e-mail da JSON

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegEx.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 `OrderDetails` contenente un campo `OrderJson`.

* Il campo `OrderJson` contiene una stringa JSON con i dati dell'ordine. La formattazione, come l'indentazione e le interruzioni di riga, è stata rimossa dal JSON. I dati dell'ordine contengono indirizzi e-mail che bisogna estrarre in valori separati.

Requisiti:

* Indirizzi e-mail in un dominio specifico: `example.com`.

* Indirizzi e-mail che contengono un numero qualsiasi di caratteri alfanumerici, oltre a una serie definita di caratteri speciali.

Script di caricamento

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

Risultati

Caricare i dati e aprire un foglio. Creare una tabella e aggiungere ognuna delle seguenti espressioni come dimensioni calcolate:

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

Tabella dei risultati

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

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