# MatchRegEx Script- en diagramfunctie

MatchRegEx() vergelijkt een invoertekenreeks (text) met een of meer reguliere expressies (regex). Het retourneert de numerieke locatie van de reguliere expressiepatronen die overeenkomen. Retourneert een overeenkomstreactie alleen als de evaluatie van de reguliere expressie overeenkomt met de gehele tekstinvoer. Als er geen overeenkomsten worden gevonden, retourneert de functie 0.

Deze functie voert regexbewerkingen uit die hoofdlettergevoelig zijn. U kunt eventueel ook de variant MatchRegExI() gebruiken om hoofdletteronafhankelijke regexbewerkingen uit te voeren.

Syntaxis:

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

Retourgegevenstypen: geheel getal

Argumenten

| Argument | Beschrijving |
| --- | --- |
| text | De tekst van de invoertekenreeks die u wilt afstemmen met één of meer reguliere expressies. Voor een overeenkomst moet deze invoerreeks een exacte overeenkomst zijn met het regex patroon. |
| regex | De reguliere expressie om te proberen af te stemmen met de invoertekenreeks. U kunt meer dan één reguliere expressie in één expressie opgeven, gescheiden als opeenvolgende argumenten. |

Voorbeelden van functies

| Voorbeeld | Resultaat |
| --- | --- |
| `MatchRegEx('testSample','test')` | Retourneert `0`. De functie retourneert alleen een overeenkomst wanneer er een exacte overeenkomst is tussen text en het regex patroon. Hoewel `testSample` `test` bevat, bevat het andere tekst (`Sample`), waardoor een exacte overeenkomst wordt voorkomen. |
| `MatchRegEx('abc123','[a-z]','[0-9]','[a-z]+[0-9]+','.+')` | Retourneert `3`.Het derde regexpatroon is het eerste dat overeenkomt met de gegevens. |
| `MatchRegEx('ABC','[abc]+','[123]')` | Retourneert `0`, omdat MatchRegEx() hoofdlettergevoelig is. |
| `MatchRegExI('ABC','[abc]+','[123]')` | Retourneert `1`. De hoofdletterongevoelige variant van de functie, MatchRegExI(), wordt gebruikt. |

## Wanneer gebruikt u MatchRegEx

Gebruiksscenario's voor deze functie zijn onder andere:

* Tekst valideren om te voldoen aan opmaak- en nalevingsnormen en om fouten in gegevens op te sporen.

* Verschillen in de opmaak van tekst identificeren. U kunt bijvoorbeeld vaststellen hoeveel telefoonnummers indeling A gebruiken, indeling B, enzovoort.

## Voorbeeld 1 - load-script om indelingen van telefoonnummers te analyseren

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

#### Load-script en resultaten

Overzicht

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

Het load-script bevat:

* Een tabel `BusinessContactInfo` met telefoonnummers van contactpersonen voor verschillende bedrijven. De telefoonnummers zijn 10-cijferige NANP-telefoonnummers.

* Een berekend veld, `PhoneNumberFormat`, om te beoordelen of elk telefoonnummer overeenkomt met één van een specifieke set telefoonnummerindelingen.

Er zijn drie verschillende indelingen waarop we willen controleren: (###) ###-####, ###-###-#### en ##########.

Load-script

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

Resultaten

Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:

* `CompanyName`

* `ContactInfo`

* `PhoneNumberFormat`

Resultatentabel

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

Van hieruit kunt u bijvoorbeeld KPI's maken om het totale aantal van elke telefoonnummerindeling te berekenen, evenals het aantal telefoonnummers dat geen erkende indeling heeft:

Voorbeelden van aggregatie-uitdrukkingen om exemplaren van elke indeling te tellen

| Opmaak | Aantal instanties | Diagramuitdrukking |
| --- | --- | --- |
| (###) ###-#### | 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) |

## Voorbeeld 2 - diagramuitdrukking om ISBN-indeling te identificeren

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

#### Diagramuitdrukking en resultaten

Overzicht

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

Het load-script bevat:

* Een tabel `Books` met ISBN-codes voor verschillende boeken.

Op basis van deze gegevens willen we bepalen of elke ISBN-code een geldige 10-cijferige of 13-cijferige code is, op basis van de syntaxis die in een regexpatroon is gespecificeerd.

Load-script

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

Resultaten

Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:

* `Book`

Voeg deze berekende dimensie toe en geef deze het label ISBN Format:

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

Resultatentabel

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

## Meer informatie

* [Werken met reguliere expressies in load-scripts en diagramuitdrukkingen](https://help.qlik.com/nl-NL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)