# MatchRegEx - script- en diagramfunctie

MatchRegEx() vergelijkt de invoertekenreeks met een of meer gespecificeerde reguliere expressiepatronen en retourneert de numerieke locatie van de overeenkomende reguliere expressiepatronen. Als er geen overeenkomsten worden gevonden, retourneert de functie 0. Deze functie zoekt alleen naar exacte overeenkomsten.

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. |
| 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('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 gebruiken

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/sense/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/sense/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/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)