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.
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]+')
Gibt 3 zurück. 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
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte 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
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte 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:
Wenn Sie Probleme mit dieser Seite oder ihren Inhalten feststellen – einen Tippfehler, einen fehlenden Schritt oder einen technischen Fehler –, teilen Sie uns bitte mit, wie wir uns verbessern können!