# SubFieldRegEx - Skript- und Diagrammfunktion

SubFieldRegEx() extrahiert Text aus einem Eingabestringausdruck unter Verwendung des Musters für den angegebenen regulären Ausdruck als Trennzeichen. Die Funktion gibt einen Nullwert zurück, wenn keine Übereinstimmungen gefunden werden.

Diese Funktion führt Regex-Vorgänge durch, bei denen die Groß- und Kleinschreibung beachtet wird. Sie können alternativ die Variante SubFieldRegExI() verwenden, um Regex-Vorgänge ohne Berücksichtigung der Groß-/Kleinschreibung durchzuführen.

Syntax:

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

Rückgabe Datentyp: String

Argumente

| Argument | Beschreibung |
| --- | --- |
| text | Der Text des Eingabestrings, in dem Sie nach dem Muster eines regulären Ausdrucks suchen möchten. |
| regex\_delimiter | Stringformel mit dem regulären Ausdruck, der als Trennzeichen verwendet werden soll. Sie können mehr als ein Trennzeichen in demselben Muster eines regulären Ausdrucks angeben, indem Sie sie mit einem `\|` (vertikaler Strich) trennen. |
| field\_no | Ganzzahliger Wert, der die Nummer der Unterteilung angibt, die Sie extrahieren möchten. Geben Sie zum Beispiel den Wert `4` an, um die vierte Unterteilung zu extrahieren. Dies ist ein optionales Argument.<br><br>Das Folgende gilt unabhängig davon, ob die Funktion in einem Ladeskript oder einer Diagrammformel verwendet wird:<br><br><ul> <li> <p>Wenn <span>field_no</span> positiv ist, gibt die Funktion einen Wert zurück, wobei die Übereinstimmungen von links nach rechts identifiziert werden.</p> </li> <li> <p>Wenn <span>field_no</span> negativ ist, gibt die Funktion einen Wert zurück, wobei die Übereinstimmungen von rechts nach links identifiziert werden.</p> </li> </ul><br><br>Wenn Sie die Funktion in einem Ladeskript verwenden:<br><br><ul> <li> <p>Wenn Sie die Funktion <span>SubFieldRegEx()</span> in einem <span>LOAD</span>-Befehl verwenden und <span>field_no</span> weglassen, generiert die Funktion so viele Datensätze, wie es Übereinstimmungen gibt.</p> </li> <li> <p>Wenn mehrere Felder mit <span>SubFieldRegEx()</span> geladen werden und keines von ihnen ein Argument <span>field_no</span> angibt, werden die kartesischen Produkte aller Kombinationen erstellt.</p> </li> </ul><br><br>Bei Verwendung der Funktion in einer Diagrammformel:<br><br><ul> <li> <p>Wenn <span>field_no</span> weggelassen wird, lautet der Standardwert <code>1</code>.</p> </li> </ul> |

Funktionsbeispiele

| Beispiel | Ergebnis |
| --- | --- |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 1)` | Gibt `a` zurück. In diesem Beispiel werden drei Trennzeichen angegeben (Leerzeichen, Komma und Semikolon). |
| `SubFieldRegEx('a;b;c;1;2;3',';', 2)` | Gibt `b` zurück. In diesem Fall wird nur ein Trennzeichen angegeben (Semikolon). |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 4)` | Gibt `1` zurück. |

## Verwendung

Sie können SubFieldRegEx() verwenden, um mehrere einzelne Werte aus einer Liste mit Trennzeichen zu extrahieren. Wenn Sie beispielsweise eine kommagetrennte Liste in einem größeren Block mit natürlicher Sprache haben, können Sie diese Funktion verwenden, um jeden einzelnen Wert aus der Liste in einem neuen Datensatz in Ihrem Datenmodell zu isolieren.

## Beispiel 1 – Ladeskript zum Trennen von Tags nach Transaktion

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

#### Ladeskript und Ergebnisse

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Eine Tabelle `Transaction_By_Tag`, die zunächst Transaktionsdaten enthält. Diese Daten werden verarbeitet, um einzelne Tag-Werte in neue Datensätze zu extrahieren.

* Die Erstellung eines Felds `TransactionTag`, um die extrahierten Tag-Werte zu speichern.

In dem Feld, das die Transaktions-Tags enthält, sind mehrere Tags in Textstrings enthalten, die durch Trennzeichen getrennt sind. Das Trennzeichen kann jedes der folgenden Zeichen sein: , | ;

Ladeskript

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* `ID`

* `Product`

* `TransactionTag`

Ergebnistabelle

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

Dieses Beispiel zeigt, dass SubFieldRegEx() bei Verwendung in einem Ladeskript für jede gefundene Übereinstimmung im Eingabestring eine eigene Zeile zurückgibt.

## Beispiel 2 – Diagrammformeln zur Trennung von Tags nach Transaktionen

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

#### Ladeskript und Ergebnisse

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Eine Tabelle `Transaction_By_Tag`, die Transaktionsdaten enthält.

* Ein Feld `Tags`, das Textstrings enthält, um alle mit einer Transaktion verbundenen Tags zu speichern.

Unsere Anforderungen:

* In dem Feld, das die Transaktions-Tags enthält, sind mehrere Tags in Textstrings enthalten, die durch Trennzeichen getrennt sind. Das Trennzeichen kann jedes der folgenden Zeichen sein: , | ;

* Wir möchten Diagrammformeln verwenden, um für jedes Tag ein eigenes Feld zu verwenden, wobei bis zu drei Tags zu einer Transaktion hinzugefügt werden können.

Ladeskript

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* `ID`

* `Tags`

Fügen Sie die folgenden dynamischen Dimensionen hinzu:

* 

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

* 

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

* 

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

Ergebnistabelle

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

## Weitere Informationen

* [Arbeiten mit regulären Ausdrücken in Ladeskripten und Diagrammformeln](https://help.qlik.com/de-DE/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)