# ExtractRegEx - Skript- und Diagrammfunktion

ExtractRegEx() extrahiert Text aus einem Eingabestringausdruck unter Verwendung des Musters für den angegebenen regulären Ausdruck. 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 ExtractRegExI() verwenden, um Regex-Vorgänge ohne Berücksichtigung der Groß-/Kleinschreibung durchzuführen.

Syntax:

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

Rückgabe Datentyp: String

Argumente

| Argument | Beschreibung |
| --- | --- |
| text | Stringformel, die den Text enthält, der im Rückgabewert extrahiert werden soll. |
| regex | Der reguläre Ausdruck, der zum Extrahieren von Text verwendet wird. |
| field\_no | Die Nummer der zu extrahierenden Übereinstimmung. Dies ist nützlich, wenn im Text mehrere Übereinstimmungen mit dem regulären Ausdruck gefunden werden können. Geben Sie zum Beispiel den Wert `4` an, um die vierte Übereinstimmung zu extrahieren. Dies ist ein optionales Argument. Geben Sie einen negativen Wert an, um die Reihenfolge der Übereinstimmungen umzukehren.<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>ExtractRegEx()</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>ExtractRegEx()</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 |
| --- | --- |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 1)` | Gibt `a` zurück, was der ersten gefundenen Übereinstimmung entspricht. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 2)` | Gibt `b` zurück, was der zweiten gefundenen Übereinstimmung entspricht. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 4)` | Gibt `1` zurück, was der vierten gefundenen Übereinstimmung entspricht. |
| `ExtractRegEx('abc','a\|b',-1)` | Liefert `b`. Wenn ein negativer Wert angegeben wird, werden die Übereinstimmungen in umgekehrter Reihenfolge gezählt. |
| `ExtractRegEx('A,B C;1 2,3','[a-c]\|[4-9]')` | Gibt einen Nullwert zurück, da ExtractRegEx() zwischen Groß- und Kleinschreibung unterscheidet und die nicht die Variante ohne Berücksichtigung der Groß- und Kleinschreibung verwendet wurde. |
| `ExtractRegExI('A,B C;1 2,3','[a-c]\|[4-9]')` | Gibt `A` zurück, da die Variante ExtractRegExI() verwendet wurde, die Groß- und Kleinschreibung nicht berücksichtigt. |

## Verwendung

Sie können Extract RegEx() verwenden, um Informationen zu extrahieren, die Sie von Daten isolieren möchten, die auch andere Informationen enthalten könnten (z. B. freien Text oder JSON-Strings). Hier ein Beispiel:

* Extrahieren Sie E-Mail-Adressen, Telefonnummern, Kontonummern und andere Informationen aus Text.

* Extrahieren Sie numerische Werte aus Text (z. B. Währung).

* Standardisieren Sie die Formatierung von Text oder numerischen Daten.

## Beispiel 1 – Ladeskript zum Extrahieren von E-Mail-Adressen aus JSON

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegEx.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 `OrderDetails` mit einem Feld `OrderJson`.

* Das Feld `OrderJson` enthält einen JSON-String mit Bestelldaten. Formatierungen wie Einrückung und Zeilenumbrüche wurden aus dem JSON entfernt. Die Bestelldaten enthalten E-Mail-Adressen, die wir in separate Werte extrahieren möchten.

* Eine neue Tabelle `EmailAddresses`, die nach `OrderDetails` geladen wird. Im `EmailAddresses` LOAD-Befehl laden wir das Feld `OrderJson` aus der Tabelle `OrderDetails` und erstellen ein neues berechnetes Feld, `Email`, das die extrahierten E-Mail-Adressen enthält. `OrderDetails` wird dann gelöscht.

Unsere Anforderungen:

* E-Mail-Adressen in einer bestimmten Domäne: `example.com`.

* E-Mail-Adressen, die eine beliebige Anzahl von alphanumerischen Zeichen sowie eine bestimmte Anzahl von Sonderzeichen enthalten.

Ladeskript

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie dieses Feld als Dimension hinzu:

* `Email`

Ergebnistabelle

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

Wenn Sie keinen Argumentwert für field\_no angeben, werden alle Übereinstimmungen automatisch in separate Werte extrahiert.

## Beispiel 2 – Ladeskript zum Extrahieren numerischer Werte aus Währungsbeträgen

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegEx.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 `Sales` mit Verkaufsdaten.

* In der Tabelle `Sales` gibt es ein Feld mit dem Namen `Amount`, das Transaktionsbeträge in USD enthält. Diese Beträge werden als Strings ausgedrückt, die Währungssymbole und Codes enthalten.

* Die Definition eines benutzerdefinierten Feldes in `Sales` (`OrderAmountNumeric_USD`), das jeden Betrag in einen rein numerischen Wert extrahiert. Diese Daten müssen in numerischer Form vorliegen, damit wir sie in Diagrammaggregierungen verwenden können.

Ladeskript

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie dieses Feld als Dimension hinzu:

* `OrderID`

* `Amount`

* `OrderAmountNumeric_USD`

Ergebnistabelle

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

## Beispiel 3 – Diagrammformeln zum Extrahieren von E-Mail-Adressen aus JSON

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

#### Diagrammformeln und Ergebnisse

Übersicht

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

Das Ladeskript umfasst:

* Eine Tabelle `OrderDetails` mit einem Feld `OrderJson`.

* Das Feld `OrderJson` enthält einen JSON-String mit Bestelldaten. Formatierungen wie Einrückung und Zeilenumbrüche wurden aus dem JSON entfernt. Die Bestelldaten enthalten E-Mail-Adressen, die wir in separate Werte extrahieren möchten.

Unsere Anforderungen:

* E-Mail-Adressen in einer bestimmten Domäne: `example.com`.

* E-Mail-Adressen, die eine beliebige Anzahl von alphanumerischen Zeichen sowie eine bestimmte Anzahl von Sonderzeichen enthalten.

Ladeskript

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine Tabelle und fügen Sie jeder der folgenden Formeln als dynamische Dimension hinzu:

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

Ergebnistabelle

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

## Weitere Informationen

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