# MatchRegEx - skript- och diagramfunktion

MatchRegEx() jämför indatasträngen med ett eller flera angivna reguljära uttrycksmönster och returnerar den numeriska platsen för de reguljära uttrycksmönster som matchar. Om inga matchningar hittas returnerar funktionen 0. Denna funktion söker endast efter exakta matchningar.

Den här funktionen utför regexoperationer som är skiftlägeskänsliga. Alternativt kan du använda varianten MatchRegExI() för att utföra skiftlägesokänsliga regexoperationer.

Syntax:

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

Returnerad datatyp: heltal

Argument

| Argument | Beskrivning |
| --- | --- |
| text | Indatasträngens text till vilken du vill matcha ett eller flera reguljärt uttryck. |
| regex | Det reguljära uttryck som ska försöka matcha indatasträngen. Du kan ange mer än ett reguljärt uttryck i ett och samma uttryck, separerade som efterföljande argument. |

Exempel på funktioner

| Exempel | Resultat |
| --- | --- |
| `MatchRegEx('abc123','[a-z]','[0-9]','[a-z]+[0-9]+','.+')` | Returnerar `3`. Det tredje regexmönstret är det första som matchar datan. |
| `MatchRegEx('ABC','[abc]+','[123]')` | Returnerar `0`, eftersom MatchRegEx() är skiftlägeskänsligt. |
| `MatchRegExI('ABC','[abc]+','[123]')` | Returnerar `1`. Den skiftlägesokänsliga varianten av funktionen, MatchRegExI(), används. |

## Användning

Användningsfall för denna funktion inkluderar:

* Validering av text för att uppfylla formaterings- och efterlevnadsstandarder och för att identifiera fel i data.

* Identifiera skillnader i hur text är formaterad. Du kan till exempel identifiera hur många telefonnummer som använder format A, format B och så vidare.

## Exempel 1 – laddningsskript för att analysera telefonnummerformat

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En tabell `BusinessContactInfo` som innehåller telefonnummer till kontaktpersoner för olika företag. Telefonnumren är 10-siffriga NANP-telefonnummer.

* Ett beräknat fält, `PhoneNumberFormat`, för att bedöma om respektive telefonnummer matchar någon specifik uppsättning av telefonnummerformat.

Det finns tre olika format som vi vill kolla efter: (###) ###-####, ###-###-#### och ##########.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `CompanyName`

* `ContactInfo`

* `PhoneNumberFormat`

Resultattabell

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

Härifrån kan du till exempel skapa KPI:er för att beräkna det totala antalet för varje telefonnummerformat, samt antalet telefonnummer som inte har ett erkänt format:

Exempel på aggregeringsuttryck för att räkna förekomster av respektive format

| Format | Antal instanser | Diagramuttryck |
| --- | --- | --- |
| (###) ###-#### | 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) |

## Exempel 2 – diagramuttryck för att identifiera ISBN-format

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

#### Diagramuttryck och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En tabell `Books` med ISBN-koder för olika böcker.

Från dessa data vill vi identifiera om varje ISBN-kod är en giltig 10-siffrig eller 13-siffrig kod, baserat på syntax som anges i ett regex-mönster.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:

* `Book`

Lägg till denna beräknade dimension och ge den etiketten 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'))
```

Resultattabell

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

## Mer information

* [Arbeta med reguljära uttryck i laddningsskript och diagramuttryck](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)