# ExtractRegExGroup Script- en diagramfunctie

ExtractRegExGroup() extraheert tekst uit een tekenreeksuitdrukking met behulp van het samengestelde reguliere expressiepatroon dat is opgegeven. Geef bij het gebruik van de functie de groep op die binnen de samengestelde regex moet worden gebruikt. De functie retourneert een nulwaarde als er geen overeenkomsten worden gevonden.

Als u de functie ExtractRegExGroup() in een LOAD-instructie gebruikt en field\_no is weggelaten, dan zal de functie meerdere records retourneren. Als meerdere velden worden geladen met ExtractRegExGroup(), worden de cartesische producten van alle combinaties gemaakt.

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

Syntaxis:

ExtractRegExGroup (text, regex, group [, field\_no])

Retourgegevenstypen: tekenreeks

Argumenten

| Argument | Beschrijving |
| --- | --- |
| text | Tekenreeksuitdrukking die de tekst bevat die in de retourwaarde moet worden geëxtraheerd. |
| regex | De reguliere expressie om te gebruiken voor het extraheren van tekst. |
| group | Het nummer van de groep, in het geval van een samengestelde reguliere expressie.<br><br>Als de reguliere expressie slechts één groep bevat, gebruik dan in plaats daarvan de functie ExtractRegEx(). Als alternatief kunt u ExtractRegExGroup() gebruiken met een group waarde van `0`.<br><br>U kunt een negatieve group waarde opgeven om van rechts naar links naar overeenkomsten te zoeken. |
| field\_no | Het nummer van de overeenkomst die moet worden uitgepakt. Dit is handig als er meerdere overeenkomsten voor de reguliere expressie in de tekst kunnen worden gevonden. Geef bijvoorbeeld de waarde `4` op om de vierde overeenkomst te extraheren.<br><br>Dit is een optioneel argument. De standaardinstelling is 1 als deze niet is opgegeven. |

Voorbeelden van functies

| Voorbeeld | Resultaat |
| --- | --- |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',1)` | Retourneert `abc` (eerste groep van eerste overeenkomst). |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',1,2)` | Retourneert `def` (eerste groep van tweede overeenkomst). |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',2)` | Retourneert `123` (tweede groep van eerste overeenkomst). |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',2,2)` | Retourneert `456` (tweede groep van tweede overeenkomst). |

## Wanneer gebruikt u ExtractRegExGroup

U kunt Extract RegEx() gebruiken om informatie te extraheren die u wilt isoleren uit gegevens die mogelijk ook andere informatie bevatten (bijvoorbeeld vrije tekst of JSON-tekenreeksen). Bijvoorbeeld:

* Extraheer e-mailadressen, telefoonnummers, rekeningnummers en andere informatie uit tekst.

* Extraheer numerieke waarden uit tekst (bijvoorbeeld valuta).

* Standaardiseer de opmaak van tekst of numerieke gegevens.

## Voorbeeld 1 - load-script om transactiecodes te parseren

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegExGroup.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 met de naam `Transactions`, die informatie over transacties bevat. Bepaalde details worden vastgelegd met transactiecodes met behulp van de volgende syntaxis:

  Transactiejaar-Transactiebron (d.w.z. online aankoop of aankoop in de winkel)-Gekoppeld distributiecentrum

* Het aanmaken van verschillende nieuwe velden om elk detail te extraheren, waarbij telkens dezelfde samengestelde reguliere expressie wordt hergebruikt.

Onze vereisten:

* Het jaar kan een willekeurige combinatie van vier cijfers zijn.

* De waarden ONLINE en INSTORE zijn de enige aanvaardbare waarden voor transactiebron.

* Het distributiecentrum moet precies vijf nummers hebben.

Load-script

```
Transactions:

Load 
	recno() as RecordID,
	ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',0) as TransactionCode_Unparsed,
	ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',1) as TransactionYear,
	ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',2) as TransactionSource,
	ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',3) as TransactionDC,
* Inline `
TransactionCode, Category
2025-ONLINE-60019, Product A
2024-INSTORE-60020, Product B
2025-ONLINE-60018, Product C
2024-ONLINE-60020, Product A
2025-INSTORE-60019, Product B
2025-ONLINE-60017, Product D
`;
```

Resultaten

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

* `RecordID`

* `TransactionCode`

* `TransactionCode_Unparsed`

* `TransactionYear`

* `TransactionSource`

* `TransactionDC`

Resultatentabel

| RecordID | TransactionCode | TransactionCode\_Unparsed | TransactionYear | TransactionSource | TransactionDC |
| --- | --- | --- | --- | --- | --- |
| 1 | 2025-ONLINE-60019 | 2025-ONLINE-60019 | 2025 | ONLINE | 60019 |
| 2 | 2024-INSTORE-60020 | 2024-INSTORE-60020 | 2024 | INSTORE | 60020 |
| 3 | 2025-ONLINE-60018 | 2025-ONLINE-60018 | 2025 | ONLINE | 60018 |
| 4 | 2024-ONLINE-60020 | 2024-ONLINE-60020 | 2024 | ONLINE | 60020 |
| 5 | 2025-INSTORE-60019 | 2025-INSTORE-60019 | 2025 | INSTORE | 60019 |
| 6 | 2025-ONLINE-60017 | 2025-ONLINE-60017 | 2025 | ONLINE | 60017 |

Deze resultaten laten zien hoe u met het argument group een enkele regex kunt hergebruiken voor meerdere bewerkingen. Het veld `TransactionCode_Unparsed`, dat een group waarde van 0 gebruikt, biedt in dit geval geen extra waarde, maar wordt hier weergegeven om de functie te demonstreren.

## Voorbeeld 2 - load-script om zakelijke contactgegevens te extraheren

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegExGroup.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 met de naam `BusinessContactInfo`, die informatie over bedrijven bevat die gevonden werd op de website van elk bedrijf.

* `ContactInfo` is een veld dat vrije tekst bevat, inclusief e-mailadressen en telefoonnummers van bedrijven.

* Het aanmaken van verschillende nieuwe velden om elk detail te extraheren, waarbij telkens dezelfde samengestelde reguliere expressie wordt hergebruikt.

Onze vereisten:

* E-mailadressen moeten voldoen aan een specifieke reeks vereisten en syntaxis.

* Telefoonnummers moeten NANP-telefoonnummers met 10 cijfers zijn. We willen toestaan dat het netnummer tussen haakjes komt te staan en op bepaalde punten spaties en koppeltekens toestaan.

Load-script

```
BusinessContactInfo:

Load
	ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',1,1) as CompanyEmail,
	ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',2,2) as CompanyPhoneNum,
* Inline `
ID	CompanyName	ContactInfo
1	Company A	Email is: Company1@example.com, Phone number is: (123) 456-7890
2	Company B	Email is: company2@test.com, Phone # is: 0123456790
3	Company C	Email is: company3@placeholder.com, Phone no. is: 234-567-8901

` (delimiter is '\t');
```

Resultaten

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

* `CompanyName`

* `CompanyEmail`

* `CompanyPhoneNum`

Resultatentabel

| CompanyName | CompanyEmail | CompanyPhoneNum |
| --- | --- | --- |
| Company A | Company1@example.com | (123) 456-7890 |
| Company B | company2@test.com | 0123456790 |
| Company C | company3@placeholder.com | 234-567-8901 |

Dezelfde samengestelde reguliere expressie wordt hergebruikt om verschillende informatie op te halen. Het argument group specificeert welke van de twee groepen van de reguliere expressie gezocht moet worden, en het argument field\_no specificeert welke algemene overeenkomst (over de hele zoekreeks) we willen vinden.

De ExtractRegEGroupxI() variant van de functie zorgt voor hoofdletterongevoelige zoekopdrachten.

## Voorbeeld 3 - load-script om componenten uit ISBN-codes te extraheren

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

* Het aanmaken van een variabele, `ISBN_RegEx`, om de reguliere expressie op te slaan die we voor alle extracties willen gebruiken.
* Een set ISBN-codes voor boeken die een boekwinkel bij verschillende leveranciers wil bestellen.

We moeten het volgende uit elke ISBN-code extraheren:

* EAN

* Groep

* Registrant

* Publicatie

* Controlesom

Load-script

```
SET ISBN_RegEx = 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})';

ISBN:
LOAD Supplier,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',1) AS EAN,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',2) AS Group,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',3) AS Registrant,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',4) AS Publication,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',5) AS Checksum;
// Split the ISBN with the Group function in a preceding load to avoid generating a cartesian product
LOAD *,
ExtractRegEx(SupplierBooks, '$(ISBN_RegEx)') AS Books
INLINE [
Supplier, SupplierBooks
Supplier 1, ISBN 123-3-1234-1234-0 ISBN 012-2-0123-0123-4 ISBN 000-1-0123-0123-2 ISBN 234-5-2345-2345-1 ISBN 555-2-5555-5555-3 ISBN 222-4-2222-2222-2
Supplier 2, ISBN 000-0-3333-3333-3 ISBN 333-3-3333-3333-3 ISBN 555-1-5151-5151-3 ISBN 232-1-2323-2323-1 ISBN 008-0-7777-7777-3 ISBN 888-0-9999-0000-0
];
```

Resultaten

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

* `Supplier`

* `EAN`

* `Group`

* `Registrant`

* `Publication`

* `Checksum`

Resultatentabel

| Supplier | EAN | Group | Registrant | Publication | Checksum |
| --- | --- | --- | --- | --- | --- |
| Supplier 1 | 000 | 1 | 0123 | 0123 | 2 |
| Supplier 1 | 012 | 2 | 0123 | 0123 | 4 |
| Supplier 1 | 123 | 3 | 1234 | 1234 | 0 |
| Supplier 1 | 222 | 4 | 2222 | 2222 | 2 |
| Supplier 1 | 234 | 5 | 2345 | 2345 | 1 |
| Supplier 1 | 555 | 2 | 5555 | 5555 | 3 |
| Supplier 2 | 000 | 0 | 3333 | 3333 | 3 |
| Supplier 2 | 008 | 0 | 7777 | 7777 | 3 |
| Supplier 2 | 232 | 1 | 2323 | 2323 | 1 |
| Supplier 2 | 333 | 3 | 3333 | 3333 | 3 |
| Supplier 2 | 555 | 1 | 5151 | 5151 | 3 |
| Supplier 2 | 888 | 0 | 9999 | 0000 | 0 |

## Voorbeeld 4 - diagramuitdrukkingen om zakelijke contactgegevens te extraheren (met vergelijking ExtractRegEx() )

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

#### Diagramuitdrukkingen 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 met de naam BusinessContactInfo, die informatie over bedrijven bevat die gevonden werd op de website van elk bedrijf.

* ContactInfo is een veld dat vrije tekst bevat, inclusief e-mailadressen en telefoonnummers van bedrijven. We willen elk e-mailadres en telefoonnummer extraheren met diagramuitdrukkingen.

Onze vereisten:

* E-mailadressen moeten voldoen aan een specifieke reeks vereisten en syntaxis.

* Telefoonnummers moeten NANP-telefoonnummers met 10 cijfers zijn. We willen toestaan dat het netnummer tussen haakjes komt te staan en op bepaalde punten spaties en koppeltekens toestaan.

Load-script

```
BusinessContactInfo:

Load * Inline `
ID	CompanyName	ContactInfo
1	Company A	Email is: Company1@example.com, Phone number is: (123) 456-7890
2	Company B	Email is: company2@test.com, Phone # is: 0123456790
3	Company C	Email is: company3@placeholder.com, Phone no. is: 234-567-8901

` (delimiter is '\t');
```

Resultaten

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

* CompanyName

Voeg de volgende berekende dimensies toe aan de tabel:

* 

  ```
  =ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',1,1)
  ```

* 

  ```
  =ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',2,2)
  ```

Resultatentabel

| CompanyName | =ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&\*\-\_+=~{\|}\/.'']{1,50})\|(\({0,1}[0-9]{3}\){0,1}[ -]\*[0-9]{3}[ -]\*[0-9]{4})',1,1) | =ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&\*\-\_+=~{\|}\/.'']{1,50})\|(\({0,1}[0-9]{3}\){0,1}[ -]\*[0-9]{3}[ -]\*[0-9]{4})',2,2) |
| --- | --- | --- |
| Company A | Company1@example.com | (123) 456-7890 |
| Company B | company2@test.com | 0123456790 |
| Company C | company3@placeholder.com | 234-567-8901 |

Dezelfde samengestelde reguliere expressie wordt hergebruikt om verschillende informatie op te halen. Het argument group specificeert welke van de twee groepen van de reguliere expressie gezocht moet worden, en het argument field\_no specificeert welke algemene overeenkomst (over de hele zoekreeks) we willen vinden.

De ExtractRegEGroupI() variant van de functie zorgt voor hoofdletterongevoelige zoekopdrachten.

## Voorbeeld 5 - URL-parseren (met ExtractRegEx() vergelijking)

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

#### Diagramuitdrukkingen 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 met de naam Correspondence, die tekst van een e-mailbericht bevat in een veld met de naam EmailBody.

* Inhoud van e-mailberichten die web-URL's bevatten.

We willen de tweede URL, indien aanwezig, uitpakken in de volgende componenten:

* Volledige URL

* Protocol

* Domein

* Pad

We willen één reguliere expressie gebruiken om alle extracties te regelen.

Load-script

```
Correspondence:

Load * Inline `
ID	EmailBody
1	Thanks again for this morning's meeting! You can find the meeting minutes posted here: https://example.com/resourceexample. If you still have any questions, always feel free to ask me or one of the other team members. Here are a few learning resources that might help you: http://www.example.ca/training1.pptx http://www.example.ca/training2.pptx http://www.example.ca/training3.pptx Thanks again!
2	Hi, you'll want to visit our company website for that, it's available at https://www.example.se.
3	Hello all, I just wanted to let you know that our online stores are now up and running! I couldn't be more excited. We are already seeing quite a bit of traffic and volume sold, which is very promising! For Product A, go to https://www.examplestore1.com/products. For Product B, you'll want go to https://www.examplestore2.com/products. Product C, go check out https://www.examplestore3.com/products. Cheers!

` (delimiter is '\t');
```

Resultaten

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

* ID

Voeg deze berekende dimensies toe:

* URL 2:

  ```
  =ExtractRegEx(EmailBody,'([a-zA-Z0-9]+):\/\/(([a-zA-Z0-9]+\.)*([a-zA-Z0-9]+)\.([a-zA-Z0-9]+))((\/[a-zA-Z0-9]+)*(\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?))?',2)
  ```

* URL 2 Protocol:

  ```
  =ExtractRegExGroup(EmailBody,'([a-zA-Z0-9]+):\/\/(([a-zA-Z0-9]+\.)*([a-zA-Z0-9]+)\.([a-zA-Z0-9]+))((\/[a-zA-Z0-9]+)*(\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?))?',1,2)
  ```

* URL 2 Domein:

  ```
  =ExtractRegExGroup(EmailBody,'([a-zA-Z0-9]+):\/\/(([a-zA-Z0-9]+\.)*([a-zA-Z0-9]+)\.([a-zA-Z0-9]+))((\/[a-zA-Z0-9]+)*(\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?))?',2,2)
  ```

* URL 2 Pad:

  ```
  =ExtractRegExGroup(EmailBody,'([a-zA-Z0-9]+):\/\/(([a-zA-Z0-9]+\.)*([a-zA-Z0-9]+)\.([a-zA-Z0-9]+))((\/[a-zA-Z0-9]+)*(\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?))?',6,2)
  ```

Resultatentabel

| Id | URL 2 | URL 2 Protocol | URL 2 Domein | URL 2 Pad |
| --- | --- | --- | --- | --- |
| 1 | http://www.example.ca/training1.pptx | http | www.example.ca | /training1.pptx |
| 2 | - | - | - | - |
| 3 | https://www.examplestore2.com/products | https | www.examplestore2.com | /products |

ExtractRegEx() retourneert de hele URL, terwijl ExtractRegExGroup() individuele delen van de URL retourneert, die overeenkomen met de group waarde die we hebben gebruikt. De record met een ID waarde van 2 bevat slechts één URL, dus hiervoor worden geen gegevens geretourneerd.

Dezelfde reguliere expressie wordt in alle diagramuitdrukkingen gebruikt om verschillende stukjes informatie te retourneren. Een uitsplitsing van de groepen die in de reguliere expressie zijn gedefinieerd, is als volgt.

Groepen in reguliere expressie

| Groepsnummer | Reguliere expressie | URL-gedeelte |
| --- | --- | --- |
| 1 | ([a-zA-Z0-9]+) | Protocol |
| 2 | (([a-zA-Z0-9]+\.)\*([a-zA-Z0-9]+)\.([a-zA-Z0-9]+)) | Domein (groepen 3, 4 en 5) |
| 3 | ([a-zA-Z0-9]+\.)\* | Hoofddomein |
| 4 | ([a-zA-Z0-9]+) | Topniveaudomein |
| 5 | ([a-zA-Z0-9]+) | Pad (groepen 7, 8, 9 en 10) (optioneel) |
| 6 | ((\/[a-zA-Z0-9]+)\*(\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?))? | Submap |
| 7 | (\/[a-zA-Z0-9]+)\* | Bestand (groepen 9 en 10) |
| 8 | (\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?) | Bestand |
| 9 | ([a-zA-Z0-9]+) | Bestandsnaam |
| 10 | (\.[a-zA-Z0-9]+)? | Bestandsextensie (optioneel) |

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