# ExtractRegEx Skript- och diagramfunktion

ExtractRegEx() extraherar text från ett indatastränguttryck med hjälp av det angivna reguljära uttrycksmönstret. Funktionen returnerar ett nullvärde om inga matchningar hittas.

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

Syntax:

ExtractRegEx (text, regex [, 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. |
| 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. Det här är ett valfritt argument. Ange ett negativt värde för att vända ordningen på matchningarna.<br><br>Följande gäller oavsett om funktionen används i ett laddningsskript eller ett diagramuttryck:<br><br><ul> <li> <p>Om <span>field_no</span> är positivt kommer funktionen att returnera ett värde som identifierar matchningar från vänster till höger.</p> </li> <li> <p>Om <span>field_no</span> är negativt kommer funktionen att returnera ett värde som identifierar matchningar från höger till vänster.</p> </li> </ul><br><br>När du använder funktionen i ett laddningsskript:<br><br><ul> <li> <p>Om du använder funktionen <span>ExtractRegEx()</span> i en <span>LOAD</span>-sats och <span>field_no</span> utelämnas, genererar funktionen lika många poster som det finns matchningar.</p> </li> <li> <p>Om flera fält laddas med hjälp av <span>ExtractRegEx()</span> och inget av dem specificerar ett <span>field_no</span>-argument skapas de kartesiska produkterna för alla kombinationer.</p> </li> </ul><br><br>När funktionen används i ett diagram-uttryck:<br><br><ul> <li> <p>Om <span>field_no</span> utelämnas är standardvärdet <code>1</code>.</p> </li> </ul> |

Exempel på funktioner

| Exempel | Resultat |
| --- | --- |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 1)` | Returnerar `a`, som är den första matchningen som hittas. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 2)` | Returnerar `b`, som är den andra matchningen som hittas. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 4)` | Returnerar `1`, som är den fjärde matchningen som hittas. |
| `ExtractRegEx('abc','a\|b',-1)` | Returnerar `b`. När ett negativt värde anges räknas matchningarna i omvänd ordning. |
| `ExtractRegEx('A,B C;1 2,3','[a-c]\|[4-9]')` | Returnerar ett nollvärde, eftersom ExtractRegEx() är skiftlägeskänsligt och den skiftlägesokänsliga varianten inte användes. |
| `ExtractRegExI('A,B C;1 2,3','[a-c]\|[4-9]')` | Returnerar `A`, eftersom den skiftlägeskänsliga varianten ExtractRegExI() användes. |

## När ska du använda ExtractRegEx

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 extrahera e-postadresser från JSON

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

#### Laddningsskript och resultat

Översikt

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

Laddningsskriptet innehåller:

* En tabell `OrderDetails` som innehåller ett fält `OrderJson`.

* Fältet `OrderJson` innehåller en JSON-sträng med orderdata. Formatering, t.ex. indrag och radbrytningar, har tagits bort från JSON. Orderdata innehåller e-postadresser som vi vill extrahera till separata värden.

* En ny tabell `EmailAddresses`, som laddas efter `OrderDetails`. I `EmailAddresses` LOAD-satsen läser vi in `OrderJson`-fältet från `OrderDetails`-tabellen och skapar ett nytt beräknat fält, `Email`, som innehåller de extraherade e-postadresserna. `OrderDetails` tas sedan bort.

Våra krav:

* E-postadresser i en specifik domän: `example.com`.

* E-postadresser som innehåller ett obegränsat antal alfanumeriska tecken samt en definierad uppsättning specialtecken.

Laddningsskript

```
OrderDetails:

Load * Inline `
OrderJson
{"Orders":[{"order_id":"12345","customer":{"name":"John Doe","email":"john.doe@example.com"},"items":{"product":"Laptop","quantity":2,"price":1200},"total_price":2400},{"order_id":"12346","customer":{"name":"Jane Doe","email":"jane.doe@example.com"},"items":{"product":"Tablet","quantity":4,"price":400},"total_price":1600},{"order_id":"12347","customer":{"name":"Amalia Craig","email":"amalia.craig@example.com"},"items":{"product":"Desktop Computer","quantity":1,"price":1900},"total_price":1900},{"order_id":"12348","customer":{"name":"Ken Roberts","email":"ken.roberts@example.com"},"items":{"product":"Phone Charger Cable","quantity":110,"price":1900},"total_price":1210}]}
` (delimiter is '\t');

EmailAddresses:

Load OrderJson, ExtractRegEx(OrderJson, '[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com') as Email Resident OrderDetails;

Drop table OrderDetails;
```

Resultat

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

* `Email`

Resultattabell

| Email |
| --- |
| amalia.craig@example.com |
| jane.doe@example.com |
| john.doe@example.com |
| ken.roberts@example.com |

Genom att inte ange något argument för field\_no extraheras alla matchningar automatiskt till separata värden.

## Exempel 2 – laddningsskript för att extrahera numeriska värden från valutabelopp

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

#### Laddningsskript och resultat

Översikt

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

Laddningsskriptet innehåller:

* En tabell `Sales` som innehåller försäljningsdata.

* I tabellen `Sales` finns ett fält med namnet `Amount`, som innehåller transaktionsbelopp i USD. Dessa belopp uttrycks som strängar, som inkluderar valutasymboler och koder.

* Definitionen av ett anpassat fält inom `Sales`, `OrderAmountNumeric_USD`, som extraherar varje belopp till ett rent numeriskt värde. Dessa data måste vara i numerisk form så att vi kan använda dem i aggregeringar av diagram.

Laddningsskript

```
SET DateFormat='MM-DD-YYYY';

Sales:

Load ExtractRegEx(Amount, '[0-9]+.[0-9]{2}') as OrderAmountNumeric_USD, * Inline `

OrderID, OrderDate, Product, Amount
1, '12-27-2024', Software, $100.31 USD
2, '12-28-2024', Electronics, $513.93 USD
3, '12-29-2024', Grocery, $34.66 USD
4, '12-30-2024', Furniture, $1124.58 USD
5, '12-31-2024', Software, $95.95 USD
6, '01-01-2025', Software, $601.00 USD
7, '01-02-2025', Grocery, $1534.20 USD
8, '01-03-2025', Produce, $51.49 USD
9, '01-04-2025', Home Improvement, $176.12 USD
10, '01-05-2025', Produce, $432.77 USD
11, '01-06-2025', Software, $270.01 USD
12, '01-07-2025', Electronics, $83.85 USD
13, '01-08-2025', Furniture, $65.65 USD
14, '01-09-2025', Electronics, $1526.39 USD
15, '01-10-2025', Software, $432.44 USD
16, '01-11-2025', Furniture, $888.15 USD
17, '01-12-2025', Furniture, $300.00 USD
18, '01-13-2025', Grocery, $109.53 USD
19, '01-14-2025', Furniture, $487.97 USD
20, '01-15-2025', Software, $65.09 USD
`;
```

Resultat

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

* `OrderID`

* `Amount`

* `OrderAmountNumeric_USD`

Resultattabell

| OrderID | Amount | OrderAmountNumeric\_USD |
| --- | --- | --- |
| 1 | $100.31 USD | 100.31 |
| 2 | $513.93 USD | 513.93 |
| 3 | $34.66 USD | 34.66 |
| 4 | $1124.58 USD | 1124.58 |
| 5 | $95.95 USD | 95.95 |
| 6 | $601.00 USD | 601.00 |
| 7 | $1534.20 USD | 1534.20 |
| 8 | $51.49 USD | 51.49 |
| 9 | $176.12 USD | 176.12 |
| 10 | $432.77 USD | 432.77 |
| 11 | $270.01 USD | 270.01 |
| 12 | $83.85 USD | 83.85 |
| 13 | $65.65 USD | 65.65 |
| 14 | $1526.39 USD | 1526.39 |
| 15 | $432.44 USD | 432.44 |
| 16 | $888.15 USD | 888.15 |
| 17 | $300.00 USD | 300.00 |
| 18 | $109.53 USD | 109.53 |
| 19 | $487.97 USD | 487.97 |
| 20 | $65.09 USD | 65.09 |

## Exempel 3 – diagramuttryck för att extrahera e-postadresser från JSON

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

#### Diagramuttryck och resultat

Översikt

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

Laddningsskriptet innehåller:

* En tabell `OrderDetails` som innehåller ett fält `OrderJson`.

* Fältet `OrderJson` innehåller en JSON-sträng med orderdata. Formatering, t.ex. indrag och radbrytningar, har tagits bort från JSON. Orderdata innehåller e-postadresser som vi vill extrahera till separata värden.

Våra krav:

* E-postadresser i en specifik domän: `example.com`.

* E-postadresser som innehåller ett obegränsat antal alfanumeriska tecken samt en definierad uppsättning specialtecken.

Laddningsskript

```
OrderDetails:

Load * Inline `
OrderJson
{"Orders":[{"order_id":"12345","customer":{"name":"John Doe","email":"john.doe@example.com"},"items":{"product":"Laptop","quantity":2,"price":1200},"total_price":2400},{"order_id":"12346","customer":{"name":"Jane Doe","email":"jane.doe@example.com"},"items":{"product":"Tablet","quantity":4,"price":400},"total_price":1600},{"order_id":"12347","customer":{"name":"Amalia Craig","email":"amalia.craig@example.com"},"items":{"product":"Desktop Computer","quantity":1,"price":1900},"total_price":1900},{"order_id":"12348","customer":{"name":"Ken Roberts","email":"ken.roberts@example.com"},"items":{"product":"Phone Charger Cable","quantity":110,"price":1900},"total_price":1210}]}
` (delimiter is '\t');
```

Resultat

Ladda data och öppna ett ark. Skapa en tabell och lägg till vart och ett av följande uttryck som beräknade dimensioner:

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',1)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',2)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',3)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',4)`

Resultattabell

| =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',1) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',2) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',3) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',4) |
| --- | --- | --- | --- |
| john.doe@example.com | jane.doe@example.com | amalia.craig@example.com | ken.roberts@example.com |

## Mer information

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