# ReplaceRegEx Funzione per script e grafici

ReplaceRegEx() restituisce una stringa dopo aver sostituito una o più corrispondenze tra una stringa di input e un modello di espressione regolare specificato. Il testo che sostituisce il testo corrispondente è specificato nell'argomento to\_str. La funzione viene applicata da sinistra verso destra, ma se si specifica un valore occurrence negativo, le funzioni leggono i valori da destra a sinistra.

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

[ReplaceRegEx - Script syntax and chart functions](https://play.vidyard.com/1STBZFJeqoouP4SSofdb5R)

Sintassi:

ReplaceRegEx (text, regex, to\_str [, occurrence])

Tipo di dati restituiti: stringa

Argomenti

| Argomento | Descrizione |
| --- | --- |
| text | Il testo della stringa di input che si desidera sostituire, completamente o parzialmente, con il nuovo testo di to\_str. |
| regex | L'espressione regolare che definisce quando sostituire il testo. Le corrispondenze tra questo argomento e l'argomento text vengono sostituite. |
| to\_str | Il nuovo testo che si desidera utilizzare per sostituire il contenuto esistente di text. |
| occurrence | Il numero della corrispondenza (tra il testo di input e l'espressione regolare) da sostituire con il nuovo testo.<br><br>Questo argomento è facoltativo. Se viene omesso, il valore predefinito è 0. Quando viene utilizzato il valore 0 o se l'argomento viene omesso, tutte le corrispondenze tra text e regex vengono sostituite con to\_str.<br><br>È possibile specificare un valore negativo per occurrence se si desidera cercare le corrispondenze da destra a sinistra. |

Esempi di funzioni

| Esempio | Risultato |
| --- | --- |
| `ReplaceRegEx('abc123','[0-9]','x')` | Restituisce `abcxxx`. In questo esempio, tutto il testo della stringa di input che corrisponde al modello regex viene sostituito con il nuovo testo. |
| `ReplaceRegEx('abc123','[0-9]','x',1)` | Restituisce `abcx23`. Viene sostituita solo la prima occorrenza di una corrispondenza tra la stringa di input e il modello regex. |
| `ReplaceRegEx('abc123','[0-9]','x',4)` | Restituisce `abc123`. Vi sono solo tre possibili corrispondenze tra la stringa di input e il modello regex, quindi non viene eseguita alcuna modifica. |
| `ReplaceRegEx('ABC123','[a-c]','5')` | Restituisce `ABC123`. Non viene eseguita alcuna modifica perché ReplaceRegEx() fa distinzione tra maiuscole e minuscole e la variante che non le distingue non è utilizzata. |
| `ReplaceRegExI('ABC123','[a-c]','5')` | Restituisce `555123`. Viene utilizzata la variante senza distinzione tra maiuscole e minuscole della funzione, ReplaceRegExI(). |

## Quando usare ReplaceRegEx

È possibile utilizzare ReplaceRegEx() per modificare il testo per soddisfare gli standard di formattazione e di conformità, soprattutto quando esistono modelli complessi nei dati. Per esempio, è possibile riformattare le stringhe dei numeri di telefono in modo da includere solo i valori numerici.

Se necessario, è possibile anche utilizzare questa funzione per mascherare le informazioni sensibili, come le informazioni di identificazione personale (PII), in modo che non vengano mostrate agli utenti che analizzano l'applicazione.

## Esempio 1 - script di caricamento per aggiornare gli indirizzi e-mail dei dipendenti

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ReplaceRegEx.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 `Employees` contenente gli indirizzi e-mail dei dipendenti di un'organizzazione.

* Creazione di un nuovo campo, `Email_Updated`, per eseguire un'operazione di ricerca e sostituzione sui valori del campo `Email_Original`.

Dopo che l'azienda ha cambiato nome, tutti gli indirizzi e-mail sono stati aggiornati per riflettere il nuovo nome.

Requisiti:

* Converte tutti i riferimenti al dominio di `test.com` in `newcompanyname.com`.

* È necessario utilizzare le operazioni regex senza distinzione tra maiuscole e minuscole.

Script di caricamento

```
Employees:

Load 
ReplaceRegExI(Email_Original, '@[a-zA-Z0-9.-]*\.?test\.com', '@newcompanyname.com') as Email_Updated,
* Inline [
ID, Email_Original
1, john_doe@test.com
2, jane_doe@test.com
3, Michael_Andrews@test.com
4, charlie_kent@test.com
5, frances_johnson@test.com
6, rebecca_smith@test.com
];
```

Risultati

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

* `ID`

* `Email_Original`

* `Email_Updated`

Tabella dei risultati

| ID | Email\_Original | Email\_Updated |
| --- | --- | --- |
| 1 | john\_doe@test.com | john\_doe@newcompanyname.com |
| 2 | jane\_doe@test.com | jane\_doe@newcompanyname.com |
| 3 | Michael\_Andrews@test.com | Michael\_Andrews@newcompanyname.com |
| 4 | charlie\_kent@support.test.com | charlie\_kent@newcompanyname.com |
| 5 | frances\_johnson@test.com | frances\_johnson@newcompanyname.com |
| 6 | rebecca\_smith@hr.test.com | rebecca\_smith@newcompanyname.com |

## Esempio 2 - script di caricamento per formattare i codici ISBN

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

* Le variabili `ISBN_13` e `ISBN_10`, che memorizzano le espressioni regolari da utilizzare per i modelli di stringhe ISBN a 13 e 10 cifre, rispettivamente.

* Una tabella `Employees` contenente i valori numerici non elaborati dei codici ISBN dei libri. La tabella contiene sia ISBN a 13 cifre che a 10 cifre.

* Diverse operazioni per estrarre ogni parte dell'ISBN, per poi restituire una stringa che mostra l'intero codice nel formato standard previsto. È necessario utilizzare una combinazione di ReplaceRegEx(), MatchRegEx(), ExtractRegExGroup() e Pick().

Requisiti:

* Bisogna formattare i numeri in un testo più leggibile, utilizzando la formattazione standardizzata:

  * ISBN ###-#-####-####-#

  * ISBN #-###-#####-#

Script di caricamento

```
Set ISBN_13 = '^([0-9]{3})([0-9]{1})([0-9]{4})([0-9]{4})([0-9]{1})$';
Set ISBN_10 = '^([0-9]{1})([0-9]{3})([0-9]{5})([0-9]{1})$';

Formatted_Codes:

Load
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_13)', '$(ISBN_10)'), ReplaceRegEx(ISBN_Unformatted, '$(ISBN_13)', 'ISBN ' & ISBN_Component1 & '-' & ISBN_Component2 & '-' & ISBN_Component3 & '-' & ISBN_Component4 & '-' & ISBN_Component5), ReplaceRegEx(ISBN_Unformatted, '$(ISBN_10)', 'ISBN ' & ISBN_Component1 & '-' & ISBN_Component2 & '-' & ISBN_Component3 & '-' & ISBN_Component4)) as ISBN_Formatted;

Load *,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 1, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 1, 1)) as ISBN_Component1,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 2, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 2, 1)) as ISBN_Component2,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 3, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 3, 1)) as ISBN_Component3,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 4, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 4, 1)) as ISBN_Component4,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 5, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 5, 1)) as ISBN_Component5
inline `
ISBN_Unformatted
1233123412340
0122012301234
0001012301232
0111234567
5552555555553
2224222222222
1901234568
3333333333333
5551515151513
2321232323231
2444444444
8880999900000
`;
```

Risultati

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

* `ISBN_Formatted`

Tabella dei risultati

| ISBN\_Formatted |
| --- |
| ISBN 000-1-0123-0123-2 |
| ISBN 0-111-23456-7 |
| ISBN 1-901-23456-8 |
| ISBN 2-444-44444-4 |
| ISBN 012-2-0123-0123-4 |
| ISBN 123-3-1234-1234-0 |
| ISBN 222-4-2222-2222-2 |
| ISBN 232-1-2323-2323-1 |
| ISBN 333-3-3333-3333-3 |
| ISBN 555-1-5151-5151-3 |
| ISBN 555-2-5555-5555-3 |
| ISBN 888-0-9999-0000-0 |

## Esempio 3 - espressione del grafico per aggiornare gli indirizzi e-mail secondari

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

* La tabella `Employees` contenente gli indirizzi e-mail dei dipendenti di un'organizzazione. Questi sono memorizzati in una singola stringa per ogni dipendente, in cui sono memorizzati più indirizzi e-mail.

Requisiti:

* Gli indirizzi e-mail secondari devono essere aggiornati per utilizzare il dominio `newcompanyname.com`. Non bisogna aggiornare alcun indirizzo e-mail primario.

* È necessario utilizzare le operazioni regex senza distinzione tra maiuscole e minuscole.

Script di caricamento

```
Employees:

Load * Inline [
ID, Emails
1, Primary: john_doe@test.com Secondary: john_michael_doe@example.com
2, Primary: jane_doe@test.com Secondary: jane_tabitha_doe_doe@example.com
3, Primary: Michael_Andrews@test.com Secondary: Michael_John_Andrews@example.com
4, Primary: charlie_kent@test.com Secondary: charlie_peter_kent@example.com
5, Primary: frances_johnson@test.com Secondary: frances_johnson@example.com
6, Primary: rebecca_smith@test.com Secondary: rebecca_danielle_smith@example.com
];
```

Risultati

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

* `ID`

* `Emails`

Aggiungere la seguente dimensione calcolata:

```
=ReplaceRegExI(Emails,'@[a-zA-Z0-9.-]*\.?[a-zA-Z0-9]*\.com','@newcompanyname.com',2)
```

Tabella dei risultati

| ID | Emails | =ReplaceRegExI(Emails,'@[a-zA-Z0-9.-]\*\.?example\.com','@newcompanyname.com',2) |
| --- | --- | --- |
| 1 | Primary: john\_doe@test.com Secondary: john\_michael\_doe@example.com | Primary: john\_doe@test.com Secondary: john\_michael\_doe@newcompanyname.com |
| 2 | Primary: jane\_doe@test.com Secondary: jane\_tabitha\_doe\_doe@example.com | Primary: jane\_doe@test.com Secondary: jane\_tabitha\_doe\_doe@newcompanyname.com |
| 3 | Primary: Michael\_Andrews@test.com Secondary: Michael\_John\_Andrews@example.com | Primary: Michael\_Andrews@test.com Secondary: Michael\_John\_Andrews@newcompanyname.com |
| 4 | Primary: charlie\_kent@test.com Secondary: charlie\_peter\_kent@example.com | Primary: charlie\_kent@test.com Secondary: charlie\_peter\_kent@newcompanyname.com.com |
| 5 | Primary: frances\_johnson@test.com Secondary: frances\_johnson@example.com | Primary: frances\_johnson@test.com Secondary: frances\_johnson@newcompanyname.com |
| 6 | Primary: rebecca\_smith@test.com Secondary: rebecca\_danielle\_smith@example.com | Primary: rebecca\_smith@test.com Secondary: rebecca\_danielle\_smith@newcompanyname.com |

Specificando il valore 2 per l'argomento occurrence, è possibile aggiornare solo la seconda istanza che corrisponde al modello regex.

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