# ExtractRegExGroup - skript- och diagramfunktion

ExtractRegExGroup() extraherar text från ett indatastränguttryck med hjälp av det sammansatta reguljära uttrycksmönster som anges. När du använder funktionen anger du den grupp som ska användas i den sammansatta regexen. Funktionen returnerar ett nullvärde om inga matchningar hittas.

Om du använder funktionen ExtractRegExGroup() i en LOAD-sats och field\_no utelämnas, kommer funktionen att returnera flera poster. Om flera fält läses in med hjälp av ExtractRegExGroup() skapas de kartesiska produkterna för alla kombinationer.

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

Syntax:

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

Returnerad datatyp: sträng

Argument

| Argument | Beskrivning |
| --- | --- |
| text | Stränguttryck som innehåller den text som ska extraheras i returvärdet. |
| regex | Det reguljära uttryck som ska användas för att extrahera text. |
| group | Gruppens nummer, om det rör sig om ett sammansatt reguljärt uttryck.<br><br>Om det reguljära uttrycket bara innehåller en grupp använder du istället funktionen ExtractRegEx(). Alternativt kan du använda ExtractRegExGroup() med ett group-värde på `0`.<br><br>Du kan ange ett negativt värde för group för att söka efter matchningar från höger till vänster. |
| field\_no | Numret på den matchning som ska extraheras. Detta är användbart när flera träffar för det reguljära uttrycket kan finnas i texten. Ange t.ex. värdet `4` för att få fram den fjärde matchningen.<br><br>Det här är ett valfritt argument. Standard är 1 om det inte anges. |

Exempel på funktioner

| Exempel | Resultat |
| --- | --- |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',1)` | Returnerar `abc` (första gruppen i första matchningen). |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',1,2)` | Returnerar `def` (första gruppen i andra matchningen). |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',2)` | Returnerar `123` (andra gruppen i första matchningen). |
| `ExtractRegExGroup('abc123 def456','([a-z]+)([0-9]+)',2,2)` | Returnerar `456` (andra gruppen i andra matchningen). |

## Användning

Du kan använda Extract RegEx() för att extrahera information som du vill isolera från data som också kan innehålla annan information (t.ex. fritext eller JSON-strängar). Exempel:

* Extrahera e-postadresser, telefonnummer, kontonummer och annan information från text.

* Extrahera numeriska värden från text (t.ex. valuta).

* Standardisera formateringen av text eller numeriska data.

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

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

#### Laddningsskript och resultat

Översikt

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

Laddningsskriptet innehåller:

* En tabell med namnet `Transactions`, som innehåller information om transaktioner. Vissa detaljer fångas upp med transaktionskoder som använder följande syntax:

  Transaktionsår-Transaktionskälla (dvs. köp online eller i butik)-Associerad distributionscentral

* Skapandet av flera nya fält för att extrahera varje detalj, var och en återanvänder samma sammansatta reguljära uttryck.

Våra krav:

* Årtalet kan vara en valfri kombination av fyra siffror.

* Värdena ONLINE och INSTORE är de enda godtagbara värdena för transaktionskällan.

* Distributionscentralen måste ha exakt fem nummer.

Laddningsskript

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

Resultat

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

* `RecordID`

* `TransactionCode`

* `TransactionCode_Unparsed`

* `TransactionYear`

* `TransactionSource`

* `TransactionDC`

Resultattabell

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

Dessa resultat visar hur argumentet group gör att du kan återanvända en enda regex för flera operationer. Fältet `TransactionCode_Unparsed`, som använder ett group-värde på 0, ger inget ytterligare värde i det här fallet, men visas här för att demonstrera funktionen.

## Exempel 2 – laddningsskript för att extrahera kontaktinformation för företag

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

#### Laddningsskript och resultat

Översikt

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

Laddningsskriptet innehåller:

* En tabell som heter `BusinessContactInfo`, som innehåller information om företag som hittades på respektive företags webbplats.

* `ContactInfo` är ett fält som innehåller fritext, inklusive företagets e-postadresser och telefonnummer.

* Skapandet av flera nya fält för att extrahera varje detalj, var och en återanvänder samma sammansatta reguljära uttryck.

Våra krav:

* E-postadresser måste uppfylla en specifik uppsättning krav och syntax.

* Telefonnumret måste vara ett NANP-nummer med 10 siffror. Vi vill tillåta att riktnumret sätts inom parentes och tillåta blanksteg och bindestreck på vissa ställen.

Laddningsskript

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

Resultat

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

* `CompanyName`

* `CompanyEmail`

* `CompanyPhoneNum`

Resultattabell

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

Samma sammansatta reguljära uttryck återanvänds för att hämta olika information. Argumentet group anger vilken av de två grupperna i det reguljära uttrycket som ska sökas, och argumentet field\_no anger vilken övergripande matchning (över hela strängen) som vi vill hitta.

ExtractRegEGroupxI()-varianten av funktionen säkerställer sökningar utan skiftlägeskänslighet.

## Exempel 3 – laddningsskript för att extrahera komponenter från ISBN-koder

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

#### Laddningsskript och resultat

Översikt

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

Laddningsskriptet innehåller:

* Skapandet av en variabel, `ISBN_RegEx`, för att lagra det reguljära uttryck som vi vill använda för alla extraktioner.
* En uppsättning ISBN-koder för böcker som en bokhandel vill beställa från flera leverantörer.

Vi måste extrahera följande från varje ISBN-kod:

* EAN

* Grupp

* Registrant

* Publication

* Checksum

Laddningsskript

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

Resultat

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

* `Supplier`

* `EAN`

* `Group`

* `Registrant`

* `Publication`

* `Checksum`

Resultattabell

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

## Exempel 4 – diagramuttryck för att extrahera kontaktinformation för företag (med jämförelse med ExtractRegEx() )

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

#### Diagramuttryck och resultat

Översikt

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

Laddningsskriptet innehåller:

* En tabell som heter BusinessContactInfo, som innehåller information om företag som hittades på respektive företags webbplats.

* ContactInfo är ett fält som innehåller fritext, inklusive företagets e-postadresser och telefonnummer. Vi vill extrahera varje e-postadress och telefonnummer med diagramuttryck.

Våra krav:

* E-postadresser måste uppfylla en specifik uppsättning krav och syntax.

* Telefonnumret måste vara ett NANP-nummer med 10 siffror. Vi vill tillåta att riktnumret sätts inom parentes och tillåta blanksteg och bindestreck på vissa ställen.

Laddningsskript

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

Resultat

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

* CompanyName

Lägg till följande beräknade dimensioner i tabellen:

* 

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

Resultattabell

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

Samma sammansatta reguljära uttryck återanvänds för att hämta olika information. Argumentet group anger vilken av de två grupperna i det reguljära uttrycket som ska sökas, och argumentet field\_no anger vilken övergripande matchning (över hela strängen) som vi vill hitta.

ExtractRegEGroupI()-varianten av funktionen säkerställer sökningar utan skiftlägeskänslighet.

## Exempel 5 – URL-parsning (med jämförelse på ExtractRegEx())

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

#### Diagramuttryck och resultat

Översikt

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

Laddningsskriptet innehåller:

* En tabell med namnet Correspondence, som innehåller e-postmeddelandetexten i ett fält med namnet EmailBody.

* Innehåll i e-postmeddelanden som innehåller URL:er.

Vi vill extrahera den andra URL:en, om den finns, i följande komponenter:

* Full URL

* Protocol

* Domän

* Sökväg

Vi vill använda ett enda reguljärt uttryck för att styra all extrahering.

Laddningsskript

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

Resultat

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

* ID

Lägg till dess beräknade dimensioner:

* 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 Domain:

  ```
  =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 Path:

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

Resultattabell

| ID | URL 2 | URL 2 Protocol | URL 2 Domain | URL 2 Path |
| --- | --- | --- | --- | --- |
| 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() returnerar hela URL:en, medan ExtractRegExGroup() returnerar enskilda delar av URL:en, vilket motsvarar det group-värde vi använde. Posten med värdet 2 på ID innehåller bara en URL, så inga data returneras för den.

Samma reguljära uttryck används i alla diagramuttryck för att returnera olika typer av information. En uppdelning av de grupper som definieras i det reguljära uttrycket följer.

Grupper i reguljärt uttryck

| Group number | Regex | URL part |
| --- | --- | --- |
| 1 | ([a-zA-Z0-9]+) | Protocol |
| 2 | (([a-zA-Z0-9]+\.)\*([a-zA-Z0-9]+)\.([a-zA-Z0-9]+)) | Domain (grupp 3, 4 och 5) |
| 3 | ([a-zA-Z0-9]+\.)\* | Root domain |
| 4 | ([a-zA-Z0-9]+) | Top-level domain |
| 5 | ([a-zA-Z0-9]+) | Path (grupp 7, 8, 9 och 10)(valfritt) |
| 6 | ((\/[a-zA-Z0-9]+)\*(\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?))? | Sub-directory |
| 7 | (\/[a-zA-Z0-9]+)\* | File (grupp 9 och 10) |
| 8 | (\/([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)?) | Fil |
| 9 | ([a-zA-Z0-9]+) | Filnamn |
| 10 | (\.[a-zA-Z0-9]+)? | Komplement till fil (valfritt) |

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