# IndexRegEx Skript- und Diagrammfunktion

IndexRegEx() durchsucht den Eingabestring und gibt die Anfangsposition des n-ten Vorkommens des Musters für den angegebenen regulären Ausdruck zurück. Ein optionales drittes Argument count liefert den Wert von n. Erfolgt keine Eingabe, wird 1 verwendet. Die Positionen im String werden von links nach rechts beginnend mit 1 aufsteigend nummeriert. Wenn keine Übereinstimmung gefunden wird, gibt die Funktion 0 zurück.

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

Syntax:

IndexRegEx (text, regex [, count])

Rückgabe Datentyp: ganze Zahl

Argumente

| Argument | Beschreibung |
| --- | --- |
| text | Der Text des Eingabestrings, in dem Sie nach einem regulären Ausdruck suchen möchten. |
| regex | Der reguläre Ausdruck, der für die Suche im Eingabestring verwendet werden soll. |
| count | Die Nummer der Ü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 Position der vierten Übereinstimmung zu extrahieren.<br><br>Dies ist ein optionales Argument. Standardwert ist 1, wenn nicht angegeben. Sie können einen negativen Wert angeben, um nach Übereinstimmungen von rechts nach links zu suchen. |

Funktionsbeispiele

| Beispiel | Ergebnis |
| --- | --- |
| `IndexRegEx('abc123','[a-z][0-9]+')` | Gibt `3` zurück (die Startposition der ersten Übereinstimmung). |
| `IndexRegEx('abc123','[a-z][0-9]+',2)` | Gibt `0` zurück (der Regex hat keine zweite Übereinstimmung). |
| `IndexRegEx('ABC123','[a-z][0-9]+')` | Gibt `0` zurück, da IndexRegEx() zwischen Groß- und Kleinschreibung unterscheidet. |
| `IndexRegExI('ABC123','[a-z][0-9]+')` | Liefert `3`. Die Variante IndexRegExI() der Funktion ohne Berücksichtigung von Groß- und Kleinschreibung wird verwendet. |

## Verwendung

Zu den Anwendungsfällen für diese Funktion gehören:

* Erkennen, wo bestimmte Textmuster in größeren Textmengen vorkommen. Sie könnten zum Beispiel wissen wollen, wo ein E-Mail-Adressmuster in einer Reihe von langen E-Mail-Nachrichten verwendet wird.

* IndexRegEx() ist besonders nützlich für die fortgeschrittene Datenverarbeitung und wird in der Regel im ersten Schritt einer längeren, komplexeren Umwandlung verwendet. Normalerweise ist es einfacher, Probleme mit anderen Regex-Funktionen wie ExtractRegEx(), MatchRegEx() und CountRegEx() zu lösen, aber es kann vorkommen, dass IndexRegEx() Lösungen bietet, die diese Funktionen nicht bieten können.

## Beispiel 1 – Ladeskript zur Identifizierung von Büchern nach ISBN

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IndexRegEx.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 mit dem Namen `ISBN`, die den Text einer E-Mail-Nachricht in einem Feld mit dem Namen `EmailBody` enthält.

Wir möchten die Positionen aller 13-stelligen ISBN-Codes aus der natürlichen Sprache in der E-Mail-Nachricht herausfinden.

Ladeskript

```
SET ISBN_RegEx = 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})';

ISBN:
LOAD IndexRegEx(EmailText,'$(ISBN_RegEx)',1) AS ISBNCode1,
IndexRegEx(EmailText,'$(ISBN_RegEx)',2) AS ISBNCode2,
IndexRegEx(EmailText,'$(ISBN_RegEx)',3) AS ISBNCode3,
* INLINE `
EmailText
Hi there! I have some books that I'm interested in ordering from your distribution center. Just wanted to make sure they were in stock before I put the order in on the system - do you think you could tell me whether you have these in stock, and how many you might be able to ship us? Thanks! Item 1: ISBN 123-3-1234-1234-0. This is one I've had a really hard time getting a hold of lately. Do you think you would have 5 in stock? If not, can I put a hold on the next 5 you get? Item 2: ISBN 012-2-0123-0123-4 ... This one is not high-priority, but if you have one, I'll take it! Item 3: ISBN 000-1-0123-0123-2. Customers have been requesting this one for a long time, and we haven't had it in stock for years due to it being out of print. Any chance you might have 7 of them? Thanks!
` (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:

* `ISBNCode1`

* `ISBNCode2`

* `ISBNCode3`

Ergebnistabelle

| ISBNCode1 | ISBNCode2 | ISBNCode3 |
| --- | --- | --- |
| 301 | 487 | 588 |

## Beispiel 2 – Diagrammformel zur Identifizierung von Kontakten mit sekundären Telefonnummern

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

#### Diagrammformel und Ergebnisse

Übersicht

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

Das Ladeskript umfasst:

* Eine Tabelle mit dem Namen `BusinessContactInfo`, die Informationen über Unternehmen enthält, die auf den Websites der einzelnen Unternehmen gefunden wurden.

* `ContactInfo` ist ein Feld, das Telefonnummern von Unternehmen enthält. Wir möchten herausfinden, welche Unternehmen mehrere Telefonnummern zur Verfügung haben.

Unsere Anforderungen:

* Telefonnummern müssen NANP-Telefonnummern mit 10 Stellen sein.

* Wir möchten, dass die Vorwahl in Klammern eingeschlossen werden kann.

* Wir möchten ein einzelnes Leerzeichen oder einen Bindestrich zwischen den einzelnen Segmenten einer Telefonnummer zulassen.

Ladeskript

```
BusinessContactInfo:

Load * Inline `
ID	CompanyName	ContactInfo
1	Company A	(123) 456-7890 (023) 123-4567
2	Company B	0123456790 1357913579 0246802468
3	Company C	234-567-8901

` (delimiter is '\t');
```

Ergebnisse

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

* `CompanyName`

Fügen Sie die folgende dynamische Dimension zur Tabelle hinzu:

```
=if(IndexRegEx(ContactInfo, '\({0,1}[0-9]{3}\){0,1}[ -]{0,1}[0-9]{3}[ -]{0,1}[0-9]{4}', 2)=0, 'No secondary phone number(s)', 'Has secondary phone number(s)')
```

Ergebnistabelle

| CompanyName | =if(IndexRegEx(ContactInfo, '\({0,1}[0-9]{3}\){0,1}[ -]{0,1}[0-9]{3}[ -]{0,1}[0-9]{4}', 2)=0, 'No secondary phone number(s)', 'Has secondary phone number(s)') |
| --- | --- |
| Company A | Has secondary phone number(s) |
| Company B | Has secondary phone number(s) |
| Company C | No secondary phone number(s) |

`Company A` hat eine sekundäre Telefonnummer. `Company B` hat zwei sekundäre Telefonnummern. `Company C` hat drei sekundäre Telefonnummern.

InformationshinweisAuch die Funktion MatchRegEx() ist für diese Art von Validierungsfällen nützlich.

## Weitere Informationen

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