# MatchRegEx Funzione per script e grafici

MatchRegEx() confronta una stringa di input (text) con una o più espressioni regolari (regex). Restituisce la posizione numerica dei modelli di espressione regolare che corrispondono. Restituisce una risposta di corrispondenza solo se la valutazione dell'espressione regolare corrisponde all'intero input di testo. Se non vengono trovate corrispondenze, la funzione restituisce 0.

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

MatchRegEx (text, regex1 [ , regex2,...regexN])

Tipo di dati restituiti: numero intero

Argomenti

| Argomento | Descrizione |
| --- | --- |
| text | Il testo della stringa di input a cui si desidera far corrispondere una o più espressioni regolari. Affinché si verifichi una corrispondenza, questa stringa di input deve corrispondere esattamente al modello regex. |
| regex | L'espressione regolare che bisogna cercare di abbinare alla stringa di input. È possibile specificare più di un'espressione regolare in un'unica espressione, separata come argomenti successivi. |

Esempi di funzioni

| Esempio | Risultato |
| --- | --- |
| `MatchRegEx('testSample','test')` | Restituisce `0` . La funzione restituisce una risposta di corrispondenza solo quando c'è una corrispondenza esatta tra text e il modello regex. Anche se `testSample` contiene `test`, contiene altro testo (`Sample`), impedendo una corrispondenza esatta. |
| `MatchRegEx('abc123','[a-z]','[0-9]','[a-z]+[0-9]+','.+')` | Restituisce `3` .Il terzo modello regex è il primo a corrispondere ai dati. |
| `MatchRegEx('ABC','[abc]+','[123]')` | Restituisce `0`, perché MatchRegEx() distingue tra maiuscole e minuscole. |
| `MatchRegExI('ABC','[abc]+','[123]')` | Restituisce `1` .Viene utilizzata la variante senza distinzione tra maiuscole e minuscole della funzione, MatchRegExI(). |

## Casi di utilizzo

I casi d'uso di questa funzione includono:

* Convalidare il testo per soddisfare gli standard di formattazione e di conformità e per identificare gli errori nei dati.

* Identificare le differenze nel modo in cui il testo viene formattato. Ad esempio, è possibile identificare quanti numeri di telefono utilizzano il formato A, il formato B e così via.

## Esempio 1 - script di caricamento per analizzare i formati dei numeri di telefono

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/MatchRegEx.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 `BusinessContactInfo` contenente i numeri di telefono di contatto di varie aziende. I numeri di telefono seguono il sistema NANP (piano di numerazione nordamericano) e hanno 10 cifre.

* Un campo calcolato, `PhoneNumberFormat`, per valutare se ogni numero di telefono corrisponde a uno di una serie specifica di formati di numeri di telefono.

Vi sono tre diversi formati che bisogna verificare: (###) ###-####, ###-###-#### e ##########.

Script di caricamento

```
BusinessContactInfo:

Load MatchRegEx(ContactInfo,'\({0,1}[0-9]{3}\) [0-9]{3}-[0-9]{4}', '[0-9]{3}-[0-9]{3}-[0-9]{4}', '[0-9]{10}') as PhoneNumberFormat,
* Inline `
ID	CompanyName	ContactInfo
1	Company A	(123) 456-7890
2	Company B	0123456790
3	Company C	234-567-8901
4	Company D	(024) 680-2456
5	Company E	(135) 791-3579
6	Company F	8901234567
7	Company G	235-235-2352
8	Company H	(555) (555) (5555)
9	Company I	2342342343
10	Company J	444-444-4444
` (delimiter is '\t');
```

Risultati

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

* `CompanyName`

* `ContactInfo`

* `PhoneNumberFormat`

Tabella dei risultati

| CompanyName | ContactInfo | PhoneNumberFormat |
| --- | --- | --- |
| Company A | (123) 456-7890 | 1 |
| Company B | 0123456790 | 3 |
| Company C | 234-567-8901 | 2 |
| Company D | (024) 680-2456 | 1 |
| Company E | (135) 791-3579 | 1 |
| Company F | 8901234567 | 3 |
| Company G | 235-235-2352 | 2 |
| Company H | (555) (555) (5555) | 0 |
| Company I | 2342342343 | 3 |
| Company J | 444-444-4444 | 2 |

Da qui, ad esempio, è possibile creare dei KPI per calcolare il numero totale per il formato di ogni numero di telefono, nonché il numero di numeri di telefono che non hanno un formato riconosciuto:

Esempi di espressioni di aggregazione per contare le occorrenze di ogni formato

| Formato | Numero di istanze | Espressione del grafico |
| --- | --- | --- |
| (###) ###-#### | 3 | =Count({&lt;PhoneNumberFormat={'1'}&gt;} PhoneNumberFormat) |
| ###-###-#### | 3 | =Count({&lt;PhoneNumberFormat={'2'}&gt;} PhoneNumberFormat) |
| ########## | 3 | =Count({&lt;PhoneNumberFormat={'3'}&gt;} PhoneNumberFormat) |
| Unrecognized format | 1 | =Count({&lt;PhoneNumberFormat={'0'}&gt;} PhoneNumberFormat) |

## Esempio 2 - espressione del grafico per identificare il formato ISBN

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/MatchRegEx.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 `Books` che elenca i codici ISBN di vari libri.

Da questi dati, bisogna identificare se ogni codice ISBN è un codice valido di 10 o 13 cifre, in base alla sintassi specificata in un modello regex.

Script di caricamento

```
Books:

Load * Inline [
Book
ISBN 123-3-1234-1234-0
ISBN 012-2-0123-0123-4
ISBN 000-1-0123-0123-2
ISBN 0-111-23456-7
ISBN 555-2-5555-5555-3
ISBN 222-4-2222-2222-2
ISBN 1-901-23456-8
ISBN 333-3-3333-3333-3
ISBN 555-1-5151-5151-3
ISBN 232-1-2323-2323-1
ISBN 2-444-44444-4
ISBN 888-0-9999-0000-0
];
```

Risultati

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

* `Book`

Aggiungere questa dimensione calcolata e assegnarle l'etichetta ISBNFormat:

```
=if(MatchRegEx(Book, 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})', 'ISBN[ ]*([0-9]{1})-([0-9]{3})-([0-9]{5})-([0-9]{1})')=1, '13-digit', 
	if(MatchRegEx(Book, 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})', 'ISBN[ ]*([0-9]{1})-([0-9]{3})-([0-9]{5})-([0-9]{1})')=2, '10-digit',
		'Invalid ISBN'))
```

Tabella dei risultati

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

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