# SubFieldRegEx funkcja skryptu i funkcja wykresu

SubFieldRegEx() wyodrębnia tekst z wejściowego wyrażenia ciągu przy użyciu określonego wzorca wyrażenia regularnego jako ogranicznika. 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 SubFieldRegExI(), aby wykonywać operacje z wyrażeniami regularnymi bez rozróżniania wielkości liter.

Składnia:

SubFieldRegEx (text, regex\_delimiter [, field\_no])

Typ zwracanych danych: ciąg znaków

Argumenty

| Argument | Opis |
| --- | --- |
| text | Tekst ciągu wejściowego, w którym ma być wyszukiwany wzorzec wyrażenia regularnego. |
| regex\_delimiter | Wyrażenie ciągu zawierające wyrażenie regularne ogranicznika. W tym samym wzorcu wyrażenia regularnego można określić więcej ograniczników, oddzielając je znakiem `\|` (pionowa kreska). |
| field\_no | Liczba całkowita wskazująca numer części do wyodrębnienia. Na przykład określ wartość `4`, aby wyodrębnić czwartą część. Ten argument jest opcjonalny.<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>SubFieldRegEx()</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>SubFieldRegEx()</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 |
| --- | --- |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 1)` | Zwraca wartość `a`. W tym przykładzie określono trzy znaki ograniczające (spacja, przecinek i średnik). |
| `SubFieldRegEx('a;b;c;1;2;3',';', 2)` | Zwraca wartość `b`. W tym przypadku jest określony tylko jeden znak ograniczający (średnik). |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 4)` | Zwraca wartość `1`. |

## Kiedy używać

Możesz użyć SubFieldRegEx(), aby wyodrębnić wiele pojedynczych wartości z ograniczonej listy. Na przykład, jeśli masz listę oddzieloną przecinkami zawartą w większym bloku języka naturalnego, możesz użyć tej funkcji, aby wyodrębnić każdą pojedynczą wartość z listy do nowego rekordu w modelu danych.

## Przykład 1 — skrypt ładowania do oddzielania znaczników według transakcji

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubFieldRegEx.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 `Transaction_By_Tag`, która początkowo zawiera dane transakcji. Dane te są przetwarzane w celu wyodrębnienia poszczególnych wartości znaczników do nowych rekordów.

* Utworzenie pola `TransactionTag` do przechowywania wyodrębnionych wartości znaczników.

W polu zawierającym znaczniki transakcji wiele znaczników jest zawartych w ciągach tekstowych, oddzielonych ogranicznikami. Ogranicznikiem może być dowolny z następujących znaków: , | ;

Skrypt ładowania

```
Transaction_By_Tag:

Load SubFieldRegEx(Tags, ',|;|\|') as TransactionTag,
* Inline [
ID	Product	Tags	Amount
1	Product A	Special order,Eligible for return,Warranty included	100.93
2	Product B	Ineligible for return|No warranty available	51.11
3	Product C	No warranty available	12.83
4	Product B	Special order;Liquidation sale;Warranty included	209.48
] (delimiter is '\t');

drop fields Tags;
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `ID`

* `Product`

* `TransactionTag`

Tabela wynikowa

| ID | Product | TransactionTag |
| --- | --- | --- |
| 1 | Product A | Eligible for return |
| 1 | Product A | Warranty included |
| 1 | Product A | Special order |
| 2 | Product B | No warranty available |
| 2 | Product B | Ineligible for return |
| 3 | Product C | No warranty available |
| 4 | Product B | Liquidation sale |
| 4 | Product B | Special order |
| 4 | Product B | Warranty included |

Ten przykład pokazuje, że gdy funkcja SubFieldRegEx() jest używana w skrypcie ładowania, zwraca oddzielny wiersz dla każdego dopasowania znalezionego w ciągu wejściowym.

## Przykład 2 — wyrażenia wykresu do oddzielania znaczników według transakcji

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubFieldRegEx.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 `Transaction_By_Tag` zawierająca dane transakcji.

* Pole `Tags`, które zawiera ciągi tekstowe do przechowywania wszystkich znaczników powiązanych z transakcją.

Nasze wymagania:

* W polu zawierającym znaczniki transakcji wiele znaczników jest zawartych w ciągach tekstowych, oddzielonych ogranicznikami. Ogranicznikiem może być dowolny z następujących znaków: , | ;

* Chcemy użyć wyrażenia wykresu, aby oddzielić każdy znacznik do jego własnego pola, z maksymalnie trzema znacznikami, które można dodać do transakcji.

Skrypt ładowania

```
Transaction_By_Tag:

Load * Inline [
ID	Product	Tags	Amount
1	Product A	Special order, Eligible for return, Warranty included	100.93
2	Product B	Ineligible for return | No warranty available	51.11
3	Product C	No warranty available	12.83
4	Product B	Special order;Liquidation sale;Warranty included	209.48
] (delimiter is '\t');
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `ID`

* `Tags`

Dodaj następujące wymiary wyliczane:

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 1)`

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 2)`

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 3)`

Tabela wynikowa

| ID | Tags | =SubFieldRegEx(Tags, ',\|;\|\\|', 1) | =SubFieldRegEx(Tags, ',\|;\|\\|', 2) | =SubFieldRegEx(Tags, ',\|;\|\\|', 3) |
| --- | --- | --- | --- | --- |
| 1 | Special order, Eligible for return, Warranty included | Special order | Eligible for return | Warranty included |
| 2 | Ineligible for return \| No warranty available | Ineligible for return | No warranty available | - |
| 3 | No warranty available | No warranty available | - | - |
| 4 | Special order;Liquidation sale;Warranty included | Special order | Liquidation sales | Warranty included |

## Dowiedz się więcej

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