Regex zum Extrahieren von Zeichenfolgen in Excel (eine oder alle Übereinstimmungen)

  • Teile Das
Michael Brown

In diesem Lernprogramm lernen Sie, wie Sie reguläre Ausdrücke in Excel verwenden, um Teilzeichenfolgen zu finden und zu extrahieren, die einem bestimmten Muster entsprechen.

Microsoft Excel bietet eine Reihe von Funktionen, um Text aus Zellen zu extrahieren. Diese Funktionen können die meisten Herausforderungen bei der Zeichenextraktion in Ihren Arbeitsblättern bewältigen. Die meisten, aber nicht alle. Wenn die Textfunktionen straucheln, kommen reguläre Ausdrücke zur Rettung. Moment... Excel hat keine RegEx-Funktionen! Stimmt, keine eingebauten Funktionen. Aber es gibt nichts, was Sie davon abhalten würde, Ihre eigenen zu verwenden :)

    Excel VBA Regex-Funktion zum Extrahieren von Zeichenketten

    Um eine benutzerdefinierte Regex-Extrakt-Funktion zu Excel hinzuzufügen, fügen Sie den folgenden Code in den VBA-Editor ein. Um reguläre Ausdrücke in VBA zu aktivieren, verwenden wir das integrierte Microsoft RegExp-Objekt.

    Public Function RegExpExtract(text As String , pattern As String , Optional instance_num As Integer = 0, Optional match_case As Boolean = True ) Dim text_matches() As String Dim matches_index As Integer On Error GoTo ErrHandl RegExpExtract = "" Set regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = pattern regex.Global = True regex.MultiLine = True If True = match_case Thenregex.ignorecase = False Else regex.ignorecase = True End If Set matches = regex.Execute(text) If 0 <matches.Count Then If (0 = instance_num) Then ReDim text_matches(matches.Count - 1, 0) For matches_index = 0 To matches.Count - 1 text_matches(matches_index, 0) = matches.Item(matches_index) Next matches_index RegExpExtract = text_matches Else RegExpExtract = matches.Item(instance_num - 1) EndIf End If Exit Function ErrHandl: RegExpExtract = CVErr(xlErrValue) End Function

    Wenn Sie nur wenig Erfahrung mit VBA haben, kann eine Schritt-für-Schritt-Anleitung hilfreich sein: How to insert VBA code in Excel.

    Hinweis: Damit die Funktion funktioniert, müssen Sie Ihre Datei als makrofähige Arbeitsmappe (.xlsm).

    RegExpExtract-Syntax

    Die RegExpExtract sucht in einer Eingabezeichenkette nach Werten, die einem regulären Ausdruck entsprechen, und extrahiert eine oder alle Übereinstimmungen.

    Die Funktion hat die folgende Syntax:

    RegExpExtract(text, muster, [instance_num], [match_case])

    Wo:

    • Text (erforderlich) - die Textzeichenfolge, in der gesucht werden soll.
    • Muster (erforderlich) - der zu übereinstimmende reguläre Ausdruck; bei direkter Eingabe in eine Formel sollte das Muster in doppelte Anführungszeichen gesetzt werden.
    • Instanz_num (optional) - eine fortlaufende Nummer, die angibt, welche Instanz extrahiert werden soll; wird sie nicht angegeben, werden alle gefundenen Treffer zurückgegeben (Standard).
    • Match_case (optional) - legt fest, ob die Groß- und Kleinschreibung des Textes beachtet werden soll; bei TRUE oder Weglassen (Standard) wird die Groß- und Kleinschreibung beachtet; bei FALSE wird die Groß- und Kleinschreibung nicht beachtet.

    Die Funktion funktioniert in allen Versionen von Excel 365, Excel 2021, Excel 2019, Excel 2016, Excel 2013 und Excel 2010.

    4 Dinge, die Sie über RegExpExtract wissen sollten

    Damit Sie die Funktion in Ihrem Excel effektiv nutzen können, müssen Sie einige wichtige Dinge beachten:

    1. Standardmäßig gibt die Funktion alle gefundenen Treffer in benachbarte Zellen, wie in diesem Beispiel gezeigt. Um ein bestimmtes Vorkommen zu erhalten, geben Sie eine entsprechende Zahl in das Feld Instanz_num Argument.
    2. Standardmäßig ist die Funktion Groß- und Kleinschreibung Für den Abgleich ohne Berücksichtigung der Groß- und Kleinschreibung setzen Sie den Parameter match_case Aufgrund der VBA-Beschränkungen funktioniert das Konstrukt (?i), bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, nicht.
    3. Wenn ein kein gültiges Muster gefunden gibt die Funktion nichts zurück (leere Zeichenkette).
    4. Wenn die Muster ist ungültig tritt ein #VALUE!-Fehler auf.

    Bevor Sie diese benutzerdefinierte Funktion in Ihren Arbeitsblättern verwenden, müssen Sie verstehen, wozu sie in der Lage ist. Die folgenden Beispiele decken einige häufige Anwendungsfälle ab und erklären, warum sich das Verhalten in Dynamic Array Excel (Microsoft 365 und Excel 2021) und im herkömmlichen Excel (2019 und ältere Versionen) unterscheiden kann.

    Hinweis: Die Regex-Beispiele wurden für einfache Datensätze geschrieben. Wir können nicht garantieren, dass sie in Ihren echten Arbeitsblättern fehlerfrei funktionieren. Diejenigen, die Erfahrung mit Regex haben, werden zustimmen, dass das Schreiben regulärer Ausdrücke ein nie endender Weg zur Perfektion ist - fast immer gibt es eine Möglichkeit, sie eleganter zu machen oder eine größere Bandbreite von Eingabedaten zu verarbeiten.

    Regex zum Extrahieren einer Zahl aus einem String

    Nach dem Motto "vom Einfachen zum Komplexen" beginnen wir mit einem sehr einfachen Fall: der Extraktion einer Zahl aus einer Zeichenkette.

    Als erstes müssen Sie entscheiden, welche Nummer Sie abrufen wollen: die erste, die letzte, ein bestimmtes Vorkommen oder alle Nummern.

    Erste Zahl extrahieren

    Da \d für eine beliebige Ziffer von 0 bis 9 und + für ein oder mehrere Male steht, hat unser regulärer Ausdruck die folgende Form:

    Muster : \d+

    Satz Instanz_num auf 1 und Sie erhalten das gewünschte Ergebnis:

    =RegExpExtract(A5, "\d+", 1)

    Dabei ist A5 die ursprüngliche Zeichenfolge.

    Der Einfachheit halber können Sie das Muster in eine vordefinierte Zelle ($A$2 ) eingeben und deren Adresse mit dem $-Zeichen verriegeln:

    =RegExpExtract(A5, $A$2, 1)

    Letzte Nummer abrufen

    Um die letzte Zahl in einer Zeichenkette zu extrahieren, ist das folgende Muster zu verwenden:

    Muster : (\d+)(?!.*\d)

    In eine menschliche Sprache übersetzt heißt das: Finde eine Zahl, auf die keine andere Zahl folgt (egal wo, nicht nur unmittelbar). Um dies auszudrücken, verwenden wir eine negative Vorausschau (?!.*\d), was bedeutet, dass rechts vom Muster keine weitere Ziffer (\d) stehen darf, unabhängig davon, wie viele andere Zeichen vor ihr stehen.

    =RegExpExtract(A5, "(\d+)(?!.*\d)")

    Tipps:

    • Um eine spezifisches Auftreten verwenden, \d+ für Muster und eine entsprechende Seriennummer für Instanz_num .
    • Die Formel zum Extrahieren alle Nummern wird im nächsten Beispiel behandelt.

    Regex zum Extrahieren aller Übereinstimmungen

    Gehen wir in unserem Beispiel noch einen Schritt weiter: Nehmen wir an, Sie wollen alle Zahlen aus einer Zeichenkette abrufen, nicht nur eine.

    Wie Sie sich vielleicht erinnern, wird die Anzahl der extrahierten Treffer durch die optionale Instanz_num Die Vorgabe ist alle Übereinstimmungen, so dass Sie diesen Parameter einfach weglassen können:

    =RegExpExtract(A2, "\d+")

    Die Formel funktioniert wunderbar für eine einzelne Zelle, aber das Verhalten unterscheidet sich in Dynamic Array Excel und nicht-dynamischen Versionen.

    Excel 365 und Excel 2021

    Dank der Unterstützung für dynamische Arrays wird eine reguläre Formel automatisch in so viele Zellen verschüttet, wie für die Anzeige aller berechneten Ergebnisse erforderlich sind. In Excel wird dies als verschütteter Bereich bezeichnet:

    Excel 2019 und niedriger

    Im vordynamischen Excel würde die obige Formel nur eine Übereinstimmung ergeben. Um mehrere Übereinstimmungen zu erhalten, müssen Sie die Formel in eine Array-Formel umwandeln. Markieren Sie dazu einen Bereich von Zellen, geben Sie die Formel ein und drücken Sie Strg + Umschalt + Enter, um sie zu vervollständigen.

    Ein Nachteil dieses Ansatzes ist, dass eine Reihe von #N/A-Fehlern in "Extrazellen" auftauchen, die leider nicht behoben werden können (weder IFERROR noch IFNA können sie beheben).

    Alle Übereinstimmungen in einer Zelle extrahieren

    Bei der Verarbeitung einer Datenspalte funktioniert der obige Ansatz natürlich nicht. In diesem Fall wäre die ideale Lösung, alle Übereinstimmungen in einer einzigen Zelle zurückzugeben. Dazu übergeben Sie die Ergebnisse von RegExpExtract an die Funktion TEXTJOIN und trennen sie mit einem beliebigen Begrenzungszeichen, z. B. einem Komma und einem Leerzeichen:

    =TEXTJOIN(", ", TRUE, RegExpExtract(A5, "\d+"))

    Hinweis: Da die Funktion TEXTJOIN nur in Excel für Microsoft 365, Excel 2021 und Excel 2019 verfügbar ist, funktioniert die Formel nicht in älteren Versionen.

    Regex zum Extrahieren von Text aus String

    Das Extrahieren von Text aus einer alphanumerischen Zeichenkette ist in Excel eine ziemlich schwierige Aufgabe. Mit regex wird dies zum Kinderspiel. Verwenden Sie einfach eine negierte Klasse, um alles abzugleichen, was nicht eine Ziffer ist.

    Muster : [^\d]+

    Um Teilzeichenfolgen in einzelnen Zellen (Spill Range) zu erhalten, lautet die Formel:

    =RegExpExtract(A5, "[^\d]+")

    Um alle Übereinstimmungen in einer Zelle auszugeben, verschachteln Sie die Funktion RegExpExtract in TEXTJOIN wie folgt:

    =TEXTJOIN("", TRUE, RegExpExtract(A5, "[^\d]+"))

    Regex zum Extrahieren von E-Mail-Adressen aus Strings

    Um eine E-Mail-Adresse aus einer Zeichenkette zu extrahieren, die viele verschiedene Informationen enthält, schreiben Sie einen regulären Ausdruck, der die Struktur der E-Mail-Adresse nachbildet.

    Muster : [\w\.\-]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,24}

    Wenn wir diese Regex aufschlüsseln, erhalten wir folgendes Ergebnis:

    • [\w\.\-]+ ist ein Benutzername, der 1 oder mehrere alphanumerische Zeichen, Unterstriche, Punkte und Bindestriche enthalten kann.
    • @ Symbol
    • [A-Za-z0-9\.\-]+ ist ein Domänenname, der aus Groß- und Kleinbuchstaben, Ziffern, Bindestrichen und Punkten (im Falle von Subdomänen) besteht. Unterstriche sind hier nicht zulässig, daher werden 3 verschiedene Zeichensätze (wie A-Z a-z und 0-9) anstelle von \w verwendet, das mit jedem Buchstaben, jeder Ziffer oder einem Unterstrich übereinstimmt.
    • \.[A-Za-z]{2,24} ist eine Top-Level-Domain, die aus einem Punkt, gefolgt von Groß- und Kleinbuchstaben, besteht. Die meisten Top-Level-Domains sind 3 Buchstaben lang (z. B. .com .org, .edu usw.), können aber theoretisch zwischen 2 und 24 Buchstaben enthalten (die längste registrierte TLD).

    Angenommen, die Zeichenfolge befindet sich in A5 und das Muster in A2, lautet die Formel zum Extrahieren einer E-Mail-Adresse:

    =RegExpExtract(A5, $A$2)

    Regex zum Extrahieren der Domäne aus einer E-Mail

    Wenn es um die Extraktion von E-Mail-Domänen geht, ist der erste Gedanke, der einem in den Sinn kommt, eine Erfassungsgruppe zu verwenden, um den Text zu finden, der unmittelbar auf das @-Zeichen folgt.

    Muster : @([A-Za-z0-9\.\-]+\.[A-Za-z]{2,24})

    Übergeben Sie es an unsere RegExp-Funktion:

    =RegExpExtract(A5, "@([A-Za-z0-9\.\-]+\.[A-Za-z]{2,24})")

    Und Sie erhalten dieses Ergebnis:

    Bei klassischen regulären Ausdrücken wird alles, was außerhalb einer Erfassungsgruppe liegt, nicht in die Extraktion einbezogen. Niemand weiß, warum VBA RegEx anders arbeitet und auch "@" erfasst. Um es loszuwerden, können Sie das erste Zeichen aus dem Ergebnis entfernen, indem Sie es durch eine leere Zeichenfolge ersetzen.

    =REPLACE(RegExpExtract(A5, "@([a-z\d][a-z\d\-\.]*\.[a-z]{2,})", 1, FALSE), 1, 1, "")

    Regulärer Ausdruck zum Extrahieren von Telefonnummern

    Telefonnummern können auf viele verschiedene Arten geschrieben werden, weshalb es nahezu unmöglich ist, eine Lösung zu finden, die unter allen Umständen funktioniert. Dennoch können Sie alle in Ihrem Datensatz verwendeten Formate aufschreiben und versuchen, sie abzugleichen.

    Für dieses Beispiel werden wir eine Regex erstellen, die Telefonnummern in jedem dieser Formate extrahiert:

    (123) 345-6789

    (123) 345 6789

    (123)3456789

    123-345-6789

    123.345.6789

    123 345 6789

    1233456789

    Muster : \(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b

    • Der erste Teil \(?\d{3} entspricht null oder einer öffnenden Klammer, gefolgt von drei Ziffern d{3}.
    • Der Teil [-\. \)]* bezeichnet jedes Zeichen in eckigen Klammern, das 0 oder mehr Mal vorkommt: Bindestrich, Punkt, Leerzeichen oder schließende Klammer.
    • Danach folgen wieder drei Ziffern, d{3}, gefolgt von einem beliebigen Bindestrich, Punkt oder Leerzeichen [-\. ]? die 0 oder 1 Mal vorkommen.
    • Danach folgt eine Gruppe von vier Ziffern \d{4}.
    • Schließlich gibt es eine Wortgrenze, die besagt, dass eine gesuchte Telefonnummer nicht Teil einer größeren Nummer sein kann.

    Die vollständige Formel sieht so aus:

    =RegExpExtract(A5, "\(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b")

    Bitte beachten Sie, dass die obige Regex einige falsch-positive Ergebnisse liefern kann, wie z.B. 123) 456 7899 oder (123 456 7899. Die folgende Version behebt diese Probleme. Diese Syntax funktioniert jedoch nur in VBA RegExp-Funktionen, nicht in klassischen regulären Ausdrücken.

    Muster : (\(\d{3}\)

    Regex zum Extrahieren von Datum aus String

    Ein regulärer Ausdruck zum Extrahieren eines Datums hängt von dem Format ab, in dem das Datum in einer Zeichenkette erscheint, zum Beispiel:

    Um Daten wie 1/1/21 oder 01/01/2021 zu extrahieren, lautet der Regex: \d{1,2}\/\d{1,2}\/(\d{4}

    Er sucht nach einer Gruppe von 1 oder 2 Ziffern d{1,2} gefolgt von einem Schrägstrich, gefolgt von einer weiteren Gruppe von 1 oder 2 Ziffern, gefolgt von einem Schrägstrich, gefolgt von einer Gruppe von 4 oder 2 Ziffern (\d{4}Wenn die erste Bedingung in der ODER-Verknüpfung erfüllt ist, werden die übrigen Bedingungen nicht geprüft.

    Um Daten wie 1-Jan-21 oder 01-Jan-2021 abzurufen, lautet das Muster: \d{1,2}-[A-Za-z]{3}-\d{2,4}

    Es wird nach einer Gruppe von 1 oder 2 Ziffern gesucht, gefolgt von einem Bindestrich, gefolgt von einer Gruppe von 3 Groß- oder Kleinbuchstaben, gefolgt von einem Bindestrich, gefolgt von einer Gruppe von 4 oder 2 Ziffern.

    Nachdem wir die beiden Muster miteinander kombiniert haben, erhalten wir die folgende Regex:

    Muster : \b\d{1,2}[\/-](\d{1,2}

    Wo:

    • Der erste Teil besteht aus 1 oder 2 Ziffern: \d{1,2}
    • Der zweite Teil besteht entweder aus 1 oder 2 Ziffern oder 3 Buchstaben: (\d{1,2}
    • Der dritte Teil besteht aus einer Gruppe von 4 oder 2 Ziffern: (\d{4}
    • Begrenzungszeichen ist entweder ein Schrägstrich oder ein Bindestrich: [\/-]
    • Auf beiden Seiten wird eine Wortgrenze \b gesetzt, um deutlich zu machen, dass ein Datum ein eigenständiges Wort und nicht Teil einer größeren Zeichenkette ist.

    Wie Sie in der Abbildung unten sehen können, werden Datumsangaben erfolgreich herausgezogen und Teilzeichenfolgen wie 11/22/333 ausgelassen. Dennoch werden falsch positive Ergebnisse zurückgegeben. In unserem Fall entspricht die Teilzeichenfolge 11-ABC-2222 in A9 technisch gesehen dem Datumsformat tt-mmm-jjjj und wird daher extrahiert.

    Um Falschmeldungen zu vermeiden, können Sie den Teil [A-Za-z]{3} durch eine vollständige Liste der Monatskürzel mit 3 Buchstaben ersetzen:

    Muster : \b\d{1,2}[\/-](\d{1,2}

    Um die Groß- und Kleinschreibung zu ignorieren, setzen wir das letzte Argument unserer benutzerdefinierten Funktion auf FALSE:

    =RegExpExtract(A5, $A$2, 1, FALSE)

    Und dieses Mal haben wir ein perfektes Ergebnis:

    Regex zum Extrahieren der Zeit aus einem String

    Um die Zeit im hh:mm oder hh:mm:ss Format zu verwenden, funktioniert der folgende Ausdruck hervorragend.

    Muster : \b(0?[0-9]

    Wenn man diese Regex aufschlüsselt, kann man 2 Teile sehen, die durch

    Ausdruck 1 : \b(0?[0-9]

    Ruft Zeiten mit AM/PM ab.

    Stunde kann eine beliebige Zahl von 0 bis 12 sein. Um sie zu erhalten, verwenden wir die OR-Konstruktion ([0-9]

    • [0-9] entspricht einer beliebigen Zahl von 0 bis 9
    • 1[0-2] entspricht einer beliebigen Zahl von 10 bis 12

    Minute [0-5]\d ist eine beliebige Zahl von 00 bis 59.

    Zweite (:[0-5]\d)? ist ebenfalls eine beliebige Zahl von 00 bis 59. Der Quantifizierer ? bedeutet Null oder ein Vorkommen, da Sekunden im Zeitwert enthalten sein können oder nicht.

    Ausdruck 2 : \b([0-9]

    Extrahiert Zeiten ohne AM/PM.

    Die Stunde Teil kann eine beliebige Zahl von 0 bis 32 sein. Um ihn zu erhalten, muss eine andere OR-Konstruktion ([0-9]

    • [0-9] entspricht einer beliebigen Zahl von 0 bis 9
    • [0-1]\d entspricht einer beliebigen Zahl von 00 bis 19
    • 2[0-3] entspricht einer beliebigen Zahl von 20 bis 23

    Die Minute und zweite Teile sind die gleichen wie in Ausdruck 1 oben.

    Die negative Vorausschau (?!:) wird zu übersprungenen Zeichenfolgen wie 20:30:80 hinzugefügt.

    Da PM/AM sowohl in Groß- als auch in Kleinbuchstaben geschrieben werden können, wird bei der Funktion nicht zwischen Groß- und Kleinschreibung unterschieden:

    =RegExpExtract(A5, $A$2, 1, FALSE)

    Ich hoffe, die obigen Beispiele haben Ihnen einige Ideen gegeben, wie Sie reguläre Ausdrücke in Ihren Excel-Arbeitsblättern verwenden können. Leider werden nicht alle Funktionen klassischer regulärer Ausdrücke in VBA unterstützt. Wenn Ihre Aufgabe nicht mit VBA RegExp gelöst werden kann, empfehle ich Ihnen, den nächsten Teil zu lesen, in dem viel leistungsfähigere .NET Regex-Funktionen behandelt werden.

    Benutzerdefinierte .NET-basierte Regex-Funktion zum Extrahieren von Text in Excel

    Im Gegensatz zu VBA RegExp-Funktionen, die von jedem Excel-Benutzer geschrieben werden können, ist .NET RegEx das Reich des Entwicklers. Das Microsoft .NET Framework unterstützt eine vollwertige Syntax für reguläre Ausdrücke, die mit Perl 5 kompatibel ist. Dieser Artikel wird Ihnen nicht beibringen, wie man solche Funktionen schreibt (ich bin kein Programmierer und habe nicht die geringste Ahnung, wie man das macht :)

    Vier leistungsstarke Funktionen, die von der standardmäßigen .NET RegEx-Engine verarbeitet werden, wurden bereits von unseren Entwicklern geschrieben und sind in Ultimate Suite enthalten. Im Folgenden werden einige praktische Anwendungen der Funktion demonstriert, die speziell für die Extraktion von Text in Excel entwickelt wurde.

    Tipp: Informationen über die .NET Regex-Syntax finden Sie unter .NET Regular Expression Language.

    Extrahieren von Stichen in Excel mit regulären Ausdrücken

    Wenn Sie die neueste Version von Ultimate Suite installiert haben, besteht das Extrahieren von Text mit regulären Ausdrücken nur aus diesen beiden Schritten:

    1. Auf der Ablebits Daten auf der Registerkarte Text Gruppe, klicken Sie auf Regex-Werkzeuge .
    2. Auf der Regex-Werkzeuge wählen Sie die Quelldaten aus, geben Sie Ihr Regex-Muster ein und wählen Sie die Option Auszug Um das Ergebnis als benutzerdefinierte Funktion und nicht als Wert zu erhalten, wählen Sie die Option Als Formel einfügen Klicken Sie anschließend auf das Kontrollkästchen Auszug Taste.

    Die Ergebnisse werden in einer neuen Spalte rechts neben den ursprünglichen Daten angezeigt:

    AblebitsRegexExtract-Syntax

    Unsere benutzerdefinierte Funktion hat die folgende Syntax:

    AblebitsRegexExtract(Referenz, Regulärer_Ausdruck)

    Wo:

    • Referenz (erforderlich) - ein Verweis auf die Zelle, die die Quellzeichenkette enthält.
    • Regulärer_Ausdruck (erforderlich) - das zu übereinstimmende Regex-Muster.

    Wichtiger Hinweis: Diese Funktion funktioniert nur auf Computern, auf denen Ultimate Suite for Excel installiert ist.

    Verwendungshinweise

    Um Ihre Lernkurve reibungsloser und Ihre Erfahrung angenehmer zu gestalten, beachten Sie bitte die folgenden Punkte:

    1. Um eine Formel zu erstellen, können Sie unsere Regex-Werkzeuge oder Excel's Funktion einfügen Sobald die Formel eingefügt ist, können Sie sie wie jede native Formel verwalten (bearbeiten, kopieren oder verschieben).
    2. Das Muster, das Sie auf der Seite Regex-Werkzeuge Es ist auch möglich, einen regulären Ausdruck in einer separaten Zelle zu speichern. In diesem Fall verwenden Sie einfach einen Zellverweis für das zweite Argument.
    3. Die Funktion extrahiert die erste gefundene Übereinstimmung .
    4. Standardmäßig ist die Funktion Groß- und Kleinschreibung Für den Abgleich ohne Berücksichtigung der Groß- und Kleinschreibung verwenden Sie das Muster (?i).
    5. Wenn keine Übereinstimmung gefunden wird, wird ein #N/A-Fehler zurückgegeben.

    Regex zum Extrahieren einer Zeichenkette zwischen zwei Zeichen

    Um Text zwischen zwei Zeichen zu erhalten, können Sie entweder eine Erfassungsgruppe oder Umwege verwenden.

    Wenn Sie Text zwischen Klammern extrahieren möchten, ist eine Erfassungsgruppe der einfachste Weg.

    Muster 1 : \[(.*?)\]

    Bei einer positiven Rück- und Vorausschau wird das Ergebnis genau dasselbe sein.

    Muster 2 : (?<=\[)(.*?)(?=\])

    Bitte beachten Sie, dass unsere Erfassungsgruppe (.*?) eine Faule Suche für Text zwischen zwei Klammern - vom ersten [ bis zum ersten ]. Eine Erfassungsgruppe ohne Fragezeichen (.*) würde eine gierige Suche und erfassen alles vom ersten [ bis zum letzten ].

    Mit dem Muster in A2 lautet die Formel wie folgt:

    =AblebitsRegexExtract(A5, $A$2)

    Wie man alle Spiele erhält

    Wie bereits erwähnt, kann die Funktion AblebitsRegexExtract nur eine Übereinstimmung extrahieren. Um alle Übereinstimmungen zu erhalten, können Sie die VBA-Funktion verwenden, die wir bereits besprochen haben. Es gibt jedoch eine Einschränkung - VBA RegExp unterstützt keine Gruppen, so dass das obige Muster auch die "Begrenzungszeichen" zurückgibt, in unserem Fall Klammern.

    =TEXTJOIN(" ", TRUE, RegExpExtract(A5, $A$2))

    Um die Klammern loszuwerden, ersetzen Sie sie durch leere Zeichenfolgen ("") mit dieser Formel:

    =SUBSTITUTE(SUBSTITUTE(TEXTJOIN(", ", TRUE, RegExpExtract(A5, $A$2)), "]", ""),"[","")

    Zur besseren Lesbarkeit verwenden wir ein Komma als Begrenzungszeichen.

    Regex zum Extrahieren von Text zwischen zwei Zeichenfolgen

    Der Ansatz, den wir für das Herausziehen von Text zwischen zwei Zeichen erarbeitet haben, funktioniert auch für das Extrahieren von Text zwischen zwei Zeichenketten.

    Um zum Beispiel alles zwischen "test 1" und "test 2" zu erhalten, verwenden Sie den folgenden regulären Ausdruck.

    Muster Test 1(.*?)Test 2

    Die vollständige Formel lautet:

    =AblebitsRegexExtract(A5, "test 1(.*?)test 2")

    Regex zum Extrahieren der Domain aus der URL

    Selbst mit regulären Ausdrücken ist das Extrahieren von Domänennamen aus URLs keine triviale Aufgabe. Das Schlüsselelement, das den Trick vollbringt, sind nicht-erfassende Gruppen. Abhängig von Ihrem letztendlichen Ziel, wählen Sie eine der folgenden Regexe.

    Um eine vollständiger Domänenname einschließlich Subdomains

    Muster (?:https?\:

    Um eine zweite Ebene Domain ohne Subdomains

    Muster (?:https?\:

    Schauen wir uns nun an, wie diese regulären Ausdrücke am Beispiel der URL "//www.mobile.ablebits.com" funktionieren:

    • (?:https?\:
    • \/\/ - zwei Schrägstriche (vor jedem Schrägstrich steht ein umgekehrter Schrägstrich, um die besondere Bedeutung des Schrägstrichs zu umgehen und ihn wörtlich zu interpretieren).
    • (?:[A-Za-z\d\-\]{2,255}\.)? - nicht erfassende Gruppe zur Identifizierung von Domänen der dritten, vierten usw. Ebene, falls vorhanden ( mobil Im ersten Muster wird sie innerhalb einer größeren Erfassungsgruppe platziert, um alle Subdomains in die Extraktion einzubeziehen. Eine Subdomain kann zwischen 2 und 255 Zeichen lang sein, daher der Quantifizierer {2,255}.
    • ([A-Za-z\d\-]{1,63}\.[A-Za-z]{2,24}) - Erfassungsgruppe zur Extraktion der Domäne zweiter Stufe ( ablebits ) und die Top-Level-Domain ( com Die maximale Länge einer Second-Level-Domain beträgt 63 Zeichen. Die längste derzeit existierende Top-Level-Domain hat 24 Zeichen.

    Je nachdem, welcher reguläre Ausdruck in A2 eingegeben wird, führt die folgende Formel zu unterschiedlichen Ergebnissen:

    =AblebitsRegexExtract(A5, $A$2)

    Regex zum Extrahieren der vollständiger Domänenname mit allen Subdomains:

    Regex zum Extrahieren einer zweite Ebene Domain ohne Subdomains:

    So können Sie mit regulären Ausdrücken Textteile in Excel extrahieren. Ich danke Ihnen für die Lektüre und freue mich darauf, Sie nächste Woche in unserem Blog zu sehen!

    Verfügbare Downloads

    Excel Regex Extract Beispiele (.xlsm Datei)

    Ultimate Suite Testversion (.exe-Datei)

    Michael Brown ist ein begeisterter Technologie-Enthusiast mit einer Leidenschaft für die Vereinfachung komplexer Prozesse mithilfe von Softwaretools. Mit mehr als einem Jahrzehnt Erfahrung in der Technologiebranche hat er seine Fähigkeiten in Microsoft Excel und Outlook sowie Google Sheets und Docs verfeinert. Michaels Blog widmet sich dem Teilen seines Wissens und seiner Expertise mit anderen und bietet leicht verständliche Tipps und Tutorials zur Verbesserung von Produktivität und Effizienz. Egal, ob Sie ein erfahrener Profi oder ein Anfänger sind, Michaels Blog bietet wertvolle Einblicke und praktische Ratschläge, wie Sie diese wichtigen Softwaretools optimal nutzen können.