# ExtractRegEx — funkcja skryptu i funkcja wykresu

ExtractRegEx() wyodrębnia tekst z wejściowego wyrażenia ciągu przy użyciu określonego wzorca wyrażenia regularnego. Funkcja zwraca wartość null, jeśli nie znaleziono żadnych dopasowań.

Funkcja ta wykonuje operacje z wyrażeniami regularnymi, w których rozróżniana jest wielkość liter. Zamiast tego można użyć wariantu ExtractRegExI(), aby wykonywać operacje z wyrażeniami regularnymi bez rozróżniania wielkości liter.

Składnia:

ExtractRegEx (text, regex [, field\_no])

Typ zwracanych danych: ciąg znaków

Argumenty

| Argument | Opis |
| --- | --- |
| text | Wyrażenie ciągu zawierające tekst, który ma zostać wyodrębniony w wartości zwracanej. |
| regex | Wyrażenie regularne używane do wyodrębniania tekstu. |
| field\_no | Numer dopasowania do wyodrębnienia. Jest to przydatne, gdy w tekście można znaleźć wiele dopasowań do wyrażenia regularnego. Na przykład określ wartość `4`, aby wyodrębnić czwarte dopasowanie. Ten argument jest opcjonalny. Podaj wartość ujemną, aby odwrócić kolejność dopasowań.<br><br>Poniższe informacje mają zastosowanie niezależnie od tego, czy funkcja jest używana w skrypcie ładowania czy wyrażeniu wykresu:<br><br><ul> <li> <p>Jeśli wartość <span>field_no</span> jest dodatnia, funkcja zwróci jedną wartość, identyfikując dopasowania od lewej do prawej.</p> </li> <li> <p>Jeśli wartość <span>field_no</span> jest ujemna, funkcja zwróci jedną wartość, identyfikując dopasowania od lewej do prawej.</p> </li> </ul><br><br>W przypadku użycia funkcji w skrypcie ładowania:<br><br><ul> <li> <p>W przypadku użycia funkcji <span>ExtractRegEx()</span> w instrukcji <span>LOAD</span> i pominięcia <span>field_no</span> funkcja generuje tyle rekordów, ile jest dopasowań.</p> </li> <li> <p>Jeśli przy użyciu funkcji <span>ExtractRegEx()</span> załadowano kilka pól i nie określono argumentu <span>field_no</span>, wówczas zostanie wygenerowany iloczyn kartezjański wszystkich kombinacji.</p> </li> </ul><br><br>Podczas używania funkcji w wyrażeniu wykresu:<br><br><ul> <li> <p>W przypadku pominięcia <span>field_no</span> wartością domyślną jest <code>1</code>.</p> </li> </ul> |

Przykłady funkcji

| Przykład | Wynik |
| --- | --- |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 1)` | Zwraca `a`, co jest pierwszym znalezionym dopasowaniem. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 2)` | Zwraca `b`, co jest drugim znalezionym dopasowaniem. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 4)` | Zwraca `1`, co jest czwartym znalezionym dopasowaniem. |
| `ExtractRegEx('abc','a\|b',-1)` | Zwraca wartość `b`. Gdy jest podana wartość ujemna, dopasowania są liczone w odwrotnej kolejności. |
| `ExtractRegEx('A,B C;1 2,3','[a-c]\|[4-9]')` | Zwraca wartość null, ponieważ ExtractRegEx() uwzględnia wielkość liter, a wariant nieuwzględniający wielkości liter nie został użyty. |
| `ExtractRegExI('A,B C;1 2,3','[a-c]\|[4-9]')` | Zwraca `A`, ponieważ użyto wariantu ExtractRegExI() nieuwzględniającego wielkości liter. |

## Kiedy używać

Możesz użyć Extract RegEx(), aby wyodrębnić informacje do wyodrębnienia z danych, które mogą również zawierać inne informacje (na przykład dowolny tekst lub ciągi JSON). Na przykład:

* Wyodrębnij adresy e-mail, numery telefonów, numery kont i inne informacje z tekstu.

* Wyodrębnij wartości liczbowe z tekstu (na przykład waluty).

* Ustandaryzuj formatowanie danych tekstowych lub liczbowych.

## Przykład 1 — skrypt ładowania do wyodrębniania adresów e-mail z JSON

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Tabela `OrderDetails` zawierająca pole `OrderJson`.

* Pole `OrderJson` zawiera ciąg JSON z danymi zamówienia. Formatowanie, takie jak wcięcia i podziały wierszy, zostało usunięte z JSON. Dane zamówienia zawierają adresy e-mail, które chcemy wyodrębnić do osobnych wartości.

* Nowa tabela `EmailAddresses`, która jest ładowana po `OrderDetails`. W instrukcji `EmailAddresses` LOAD ładujemy pole `OrderJson` z tabeli `OrderDetails` i tworzymy nowe pole wyliczane, `Email`, które zawiera wyodrębnione adresy e-mail. Tabela `OrderDetails` jest następnie usuwana.

Nasze wymagania:

* Adresy e-mail w określonej domenie: `example.com`.

* Adresy e-mail zawierające dowolną liczbę znaków alfanumerycznych, a także zdefiniowany zestaw znaków specjalnych.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:

* `Email`

Tabela wynikowa

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

Jeżeli wartość argumentu field\_no nie zostanie określona, wszystkie dopasowania będą automatycznie wyodrębniane do oddzielnych wartości.

## Przykład 2 — skrypt ładowania do wyodrębniania wartości liczbowych z kwot w walucie

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Tabela `Sales` zawierająca dane dotyczące sprzedaży.

* W tabeli `Sales` znajduje się pole o nazwie `Amount`, które zawiera kwoty transakcji w USD. Kwoty te są wyrażone jako ciągi znaków, które zawierają symbole i kody walut.

* Definicja niestandardowego pola w `Sales`, `OrderAmountNumeric_USD`, które wyodrębnia każdą kwotę do wartości czysto liczbowej. Dane te muszą mieć postać liczbową, abyśmy mogli wykorzystać je w agregacjach wykresów.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:

* `OrderID`

* `Amount`

* `OrderAmountNumeric_USD`

Tabela wynikowa

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

## Przykład 3 — wyrażenia wykresu do wyodrębniania adresów e-mail z JSON

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

#### Wyrażenia wykresu i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Tabela `OrderDetails` zawierająca pole `OrderJson`.

* Pole `OrderJson` zawiera ciąg JSON z danymi zamówienia. Formatowanie, takie jak wcięcia i podziały wierszy, zostało usunięte z JSON. Dane zamówienia zawierają adresy e-mail, które chcemy wyodrębnić do osobnych wartości.

Nasze wymagania:

* Adresy e-mail w określonej domenie: `example.com`.

* Adresy e-mail zawierające dowolną liczbę znaków alfanumerycznych, a także zdefiniowany zestaw znaków specjalnych.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz tabelę i dodaj każde z następujących wyrażeń jako wymiary wyliczane:

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

Tabela wynikowa

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

## Dowiedz się więcej

* [Praca z wyrażeniami regularnymi w skryptach ładowania i wyrażeniach wykresu](https://help.qlik.com/pl-PL/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)