Excel RegEx-Beispiele: Verwendung regulärer Ausdrücke in Formeln

  • Teile Das
Michael Brown

Sie haben nie verstanden, warum reguläre Ausdrücke in Excel-Formeln nicht unterstützt werden? Jetzt schon :) Mit unseren benutzerdefinierten Funktionen können Sie ganz einfach Zeichenfolgen finden, ersetzen, extrahieren und entfernen, die einem bestimmten Muster entsprechen.

Auf den ersten Blick hat Excel alles, was man für die Manipulation von Textstrings braucht. Hmm... was ist mit regulären Ausdrücken? Ups, es gibt keine eingebauten Regex-Funktionen in Excel. Aber niemand sagt, dass wir nicht unsere eigenen erstellen können :)

    Was ist ein regulärer Ausdruck?

    Ein regulärer Ausdruck (auch bekannt als regex oder regexp ) ist eine speziell kodierte Folge von Zeichen, die ein Suchmuster definiert. Mit diesem Muster können Sie eine übereinstimmende Zeichenkombination in einer Zeichenfolge finden oder Dateneingaben überprüfen. Wenn Sie mit der Notation von Platzhaltern vertraut sind, können Sie sich Regexe als eine erweiterte Version von Platzhaltern vorstellen.

    Reguläre Ausdrücke haben eine eigene Syntax, die aus Sonderzeichen, Operatoren und Konstrukten besteht, z. B. passt [0-5] auf jede einzelne Ziffer von 0 bis 5.

    Reguläre Ausdrücke werden in vielen Programmiersprachen verwendet, darunter auch in JavaScript und VBA. Letzteres verfügt über ein spezielles RegExp-Objekt, das wir zur Erstellung unserer benutzerdefinierten Funktionen verwenden werden.

    Unterstützt Excel Regex?

    Leider gibt es in Excel keine eingebauten Regex-Funktionen. Um reguläre Ausdrücke in Ihren Formeln verwenden zu können, müssen Sie eine eigene benutzerdefinierte Funktion (VBA oder .NET-basiert) erstellen oder Tools von Drittanbietern installieren, die Regexe unterstützen.

    Excel Regex Spickzettel

    Unabhängig davon, ob ein Regex-Muster sehr einfach oder extrem anspruchsvoll ist, wird es mit Hilfe der gemeinsamen Syntax aufgebaut. Dieses Tutorial zielt nicht darauf ab, Ihnen reguläre Ausdrücke beizubringen. Dafür gibt es zahlreiche Ressourcen im Internet, von kostenlosen Tutorials für Anfänger bis hin zu Premium-Kursen für fortgeschrittene Benutzer.

    Nachfolgend finden Sie eine Kurzreferenz der wichtigsten RegEx-Muster, die Ihnen helfen wird, die Grundlagen zu verstehen, und die Ihnen auch als Spickzettel beim Studium weiterer Beispiele dienen kann.

    Wenn Sie mit regulären Ausdrücken vertraut sind, können Sie direkt zu den RegExp-Funktionen übergehen.

    Zeichen

    Dies sind die am häufigsten verwendeten Muster für die Übereinstimmung mit bestimmten Zeichen.

    Muster Beschreibung Beispiel Streichhölzer
    . Wildcard-Zeichen: passt auf jedes einzelne Zeichen außer einem Zeilenumbruch .ot Punkt , heiß , Topf , @ot
    \d Ziffernzeichen: jede einzelne Ziffer von 0 bis 9 \d Unter a1b , Streichhölzer 1
    \D Jedes Zeichen, das keine Ziffer ist \D Unter a1b , Streichhölzer a und b
    \s Leerzeichen: Leerzeichen, Tabulator, Zeilenumbruch und Wagenrücklauf .\s. Unter 3 Cents , Streichhölzer 3 c
    \S Jedes Zeichen, das kein Leerzeichen ist \S+ Unter 30 Cents , Streichhölzer 30 und Cents
    \w Wortzeichen: beliebiger ASCII-Buchstabe, Ziffer oder Unterstrich \w+ Unter 5_cats*** , Streichhölzer 5_Katzen
    \W Jedes Zeichen, das NICHT ein alphanumerisches Zeichen oder ein Unterstrich ist \W+ Unter 5_cats*** , Streichhölzer ***
    \t Registerkarte
    \n Neue Linie \n\d+ In der nachstehenden zweizeiligen Zeichenfolge werden die Treffer 10

    5 Katzen

    10 Hunde

    \ Entfernt die besondere Bedeutung eines Zeichens, so dass Sie danach suchen können \.

    \w+\.

    Umgeht einen Punkt, so dass Sie das wörtliche "."-Zeichen in einer Zeichenfolge finden können

    Herr , Frau , Prof.

    Charakterklassen

    Mit diesen Mustern können Sie Elemente aus verschiedenen Zeichensätzen abgleichen.

    Muster Beschreibung Beispiel Streichhölzer
    [Zeichen] Passt auf jedes einzelne Zeichen in den Klammern d[oi]g Hund und graben
    [^Zeichen] Passt auf jedes einzelne Zeichen, das NICHT in den Klammern steht d[^oi]g Streichhölzer dag, gegraben , d1g

    Passt nicht Hund und dig

    [von-bis] Passt auf jedes Zeichen im Bereich zwischen den Klammern [0-9]

    [a-z]

    [A-Z]

    Jede einzelne Ziffer von 0 bis 9

    Jeder einzelne Kleinbuchstabe

    Jeder einzelne Großbuchstabe

    Quantoren

    Quantifizierer sind spezielle Ausdrücke, die die Anzahl der zu übereinstimmenden Zeichen angeben. Ein Quantifizierer bezieht sich immer auf das Zeichen vor ihm.

    Muster Beschreibung Beispiel Streichhölzer
    * Null oder mehr Vorkommnisse 1a* 1, 1a , 1aa, 1aaa , usw.
    + Ein oder mehrere Vorkommnisse po+ Unter Topf , Streichhölzer po

    Unter arm , Streichhölzer Kacke

    ? Null oder einmaliges Auftreten roa?d Straße, Stange
    *? Null oder mehr Vorkommnisse, aber so wenig wie möglich 1a*? Unter 1a , 1aa und 1aaa , Streichhölzer 1a
    +? Ein oder mehrere Vorkommen, aber so wenige wie möglich po+? Unter Topf und arm , Streichhölzer po
    ?? Null oder ein Vorkommen, aber so wenige wie möglich roa?? Unter Straße und Stab , Streichhölzer ro
    {n} Entspricht n-mal dem vorhergehenden Muster \d{3} Genau 3 Ziffern
    {n,} Entspricht dem vorangehenden Muster n-mal oder öfter \d{3,} 3 oder mehr Ziffern
    {n,m} Entspricht dem vorangehenden Muster zwischen n und m Mal \d{3,5} Von 3 bis 5 Ziffern

    Gruppierung

    Gruppierungskonstrukte werden verwendet, um eine Teilzeichenkette aus der Quellzeichenkette zu erfassen, damit Sie eine Operation damit durchführen können.

    Syntax Beschreibung Beispiel Streichhölzer
    (Muster) Erfassungsgruppe: Erfasst eine übereinstimmende Teilzeichenkette und weist ihr eine Ordnungszahl zu (\d+) Unter 5 Katzen und 10 Hunde , fängt 5 (Gruppe 1) und 10 (Gruppe 2)
    (?:Muster) Nicht-erfassende Gruppe: stimmt mit einer Gruppe überein, erfasst sie aber nicht (\d+)(?: Hunde) Unter 5 Katzen und 10 Hunde , fängt 10
    \1 Inhalt der Gruppe 1 (\d+)\+(\d+)=\2\+\1 Entspricht 5+10=10+5 und fängt 5 und 10 die sich in Erfassungsgruppen befinden
    \2 Inhalt der Gruppe 2

    Verankerungen

    Anker geben eine Position in der Eingabezeichenkette an, an der nach einer Übereinstimmung gesucht werden soll.

    Verankerung Beschreibung Beispiel Streichhölzer
    ^ Anfang der Zeichenkette

    Hinweis: [^innerhalb der Klammern] bedeutet "nicht".

    ^\d+ Beliebige Anzahl von Ziffern am Anfang der Zeichenkette.

    Unter 5 Katzen und 10 Hunde , Streichhölzer 5

    $ Ende der Zeichenkette \d+$ Beliebige Anzahl von Ziffern am Ende der Zeichenkette.

    Unter 10 plus 5 ergibt 15 , Streichhölzer 15

    \b Wort-Grenze \bjoy\b Streichhölzer Freude als eigenständiges Wort, aber nicht in unterhaltsam .
    \B NICHT eine Wortgrenze \Bjoy\B Streichhölzer Freude in unterhaltsam , aber nicht als eigenständiges Wort.

    Alternation (OR)-Konstrukt

    Der Alternationsoperand aktiviert die ODER-Logik, so dass Sie entweder dieses oder jenes Element finden können.

    Konstruieren Sie Beschreibung Beispiel Streichhölzer
    Passt auf jedes einzelne Element, das durch einen vertikalen Balken getrennt ist (s Unter verkauft sie Muscheln, passt zu Verkauft und Muscheln

    Umfragen

    Lookaround-Konstrukte sind hilfreich, wenn Sie etwas finden wollen, das von etwas anderem gefolgt wird oder nicht. Diese Ausdrücke werden manchmal als "zero-width assertions" oder "zero-width match" bezeichnet, weil sie eher einer Position als tatsächlichen Zeichen entsprechen.

    Hinweis: In der VBA-RegEx-Variante werden Lookbehinds nicht unterstützt.

    Muster Beschreibung Beispiel Streichhölzer
    (?=) Positive Vorausschau X(?=Y) Entspricht dem Ausdruck X, wenn er von Y gefolgt wird (d. h. wenn Y vor X steht)
    (?!) Negative Vorausschau X(?!Y) Entspricht dem Ausdruck X, wenn er NICHT von Y gefolgt wird
    (?<=) Positiver Rückblick (?<=Y)X Entspricht dem Ausdruck X, wenn ihm Y vorangestellt ist (d. h. wenn Y hinter X steht)
    (? )</td Negative Rückblicke (? Y)X</td Entspricht dem Ausdruck X, wenn ihm NICHT Y vorangestellt ist

    Nun, da Sie die Grundlagen kennen, kommen wir zum interessantesten Teil - der Verwendung von Regexen auf realen Daten, um Zeichenketten zu analysieren und die gewünschten Informationen zu finden. Wenn Sie mehr Details über die Syntax benötigen, könnte sich das Microsoft-Handbuch zur Sprache der regulären Ausdrücke als hilfreich erweisen.

    Benutzerdefinierte RegEx-Funktionen für Excel

    Wie bereits erwähnt, hat Microsoft Excel keine eingebauten RegEx-Funktionen. Um reguläre Ausdrücke zu ermöglichen, haben wir drei benutzerdefinierte VBA-Funktionen erstellt. Sie können die Codes von den unten verlinkten Seiten oder aus unserer Beispielarbeitsmappe kopieren und dann in Ihre eigenen Excel-Dateien einfügen.

    Wie VBA RegExp-Funktionen funktionieren

    Dieser Abschnitt erklärt die inneren Mechanismen und kann für diejenigen interessant sein, die genau wissen wollen, was am hinteren Ende passiert.

    Um reguläre Ausdrücke in VBA verwenden zu können, müssen Sie entweder die RegEx-Objektreferenzbibliothek aktivieren oder die Funktion CreateObject verwenden. Um Ihnen das Einstellen der Referenz im VBA-Editor zu ersparen, haben wir uns für letztere Methode entschieden.

    Das RegExp-Objekt hat 4 Eigenschaften:

    • Muster - ist die Muster in der Eingabezeichenkette zu finden.
    • Global - steuert, ob alle Übereinstimmungen in der Eingabezeichenkette oder nur die erste gefunden werden soll. In unseren Funktionen wird sie auf True gesetzt, um alle Spiele .
    • MultiLine - legt fest, ob das Muster in mehrzeiligen Zeichenketten über Zeilenumbrüche hinweg oder nur in der ersten Zeile gesucht werden soll. In unserem Code wird es auf True gesetzt, um zu suchen in jeder Zeile .
    • IgnoreCase - legt fest, ob ein regulärer Ausdruck die Groß- und Kleinschreibung beachtet (Standard) oder nicht beachtet (auf True gesetzt). In unserem Fall hängt das davon ab, wie Sie die optionale match_case Standardmäßig sind alle Funktionen mit dem Parameter Groß- und Kleinschreibung .

    VBA RegExp Einschränkungen

    Excel VBA implementiert die wesentlichen Regex-Muster, aber es fehlen viele fortgeschrittene Funktionen, die in .NET, Perl, Java und anderen Regex-Engines verfügbar sind. VBA RegExp unterstützt beispielsweise keine Inline-Modifikatoren wie (?i) für den Abgleich ohne Berücksichtigung der Groß-/Kleinschreibung oder (?m) für den Mehrzeilenmodus, Lookbehinds, POSIX-Klassen, um nur einige zu nennen.

    Excel-Funktion Regex Match

    Die RegExpMatch sucht in einer Eingabezeichenkette nach Text, der mit einem regulären Ausdruck übereinstimmt, und gibt TRUE zurück, wenn eine Übereinstimmung gefunden wird, andernfalls FALSE.

    RegExpMatch(text, muster, [match_case])

    Wo:

    • Text (erforderlich) - eine oder mehrere Zeichenketten, in denen gesucht werden soll.
    • Muster (erforderlich) - der zu übereinstimmende reguläre Ausdruck.
    • Match_case (optional) - Übereinstimmungsart: TRUE oder weggelassen - Groß-/Kleinschreibung beachten; FALSE - Groß-/Kleinschreibung nicht beachten

    Der Code der Funktion befindet sich hier.

    Beispiel: Verwendung regulärer Ausdrücke für die Übereinstimmung von Zeichenketten

    Nehmen wir an, Sie möchten im unten stehenden Datensatz die Einträge mit SKU-Codes identifizieren.

    Da jede SKU mit 2 Großbuchstaben beginnt, gefolgt von einem Bindestrich, gefolgt von 4 Ziffern, können Sie sie mit dem folgenden Ausdruck abgleichen.

    Muster : \b[A-Z]{2}-\d{4}\b

    Dabei steht [A-Z]{2} für 2 beliebige Großbuchstaben von A bis Z und \d{4} für 4 beliebige Ziffern von 0 bis 9. Eine Wortgrenze \b zeigt an, dass eine SKU ein separates Wort und nicht Teil einer größeren Zeichenfolge ist.

    Wenn Sie das Muster festgelegt haben, geben Sie wie gewohnt eine Formel ein, und der Name der Funktion erscheint in der Liste, die von der Autovervollständigung von Excel vorgeschlagen wird:

    Angenommen, die ursprüngliche Zeichenfolge befindet sich in A5, so lautet die Formel wie folgt:

    =RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")

    Der Einfachheit halber können Sie den regulären Ausdruck in eine separate Zelle eingeben und eine absolute Referenz ($A$2) für die Muster Dadurch wird sichergestellt, dass die Zelladresse unverändert bleibt, wenn Sie die Formel in andere Zellen kopieren:

    =RegExpMatch(A5, $A$2)

    Um Ihre eigenen Textbeschriftungen anstelle von TRUE und FALSE anzuzeigen, schachteln Sie RegExpMatch in die IF-Funktion und geben Sie die gewünschten Texte in der wert_wenn_true und wert_wenn_false Argumente:

    =IF(RegExpMatch(A5, $A$2), "Ja", "Nein")

    Weitere Beispiele für Formeln finden Sie unter:

    • Wie man mit regulären Ausdrücken Zeichenfolgen abgleicht
    • Excel-Datenüberprüfung mit Regexen

    Excel Regex Extract Funktion

    Die RegExpExtract sucht nach Teilzeichenfolgen, die mit einem regulären Ausdruck übereinstimmen, und extrahiert alle Übereinstimmungen oder eine bestimmte Übereinstimmung.

    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.
    • Instanz_num (optional) - eine fortlaufende Nummer, die angibt, welche Instanz extrahiert werden soll; wird sie nicht angegeben, werden alle gefundenen Übereinstimmungen zurückgegeben (Standard).
    • Match_case (optional) - legt fest, ob die Groß- und Kleinschreibung berücksichtigt (TRUE oder weggelassen) oder ignoriert (FALSE) werden soll.

    Sie können den Code der Funktion hier abrufen.

    Beispiel: Extraktion von Zeichenketten mit regulären Ausdrücken

    Gehen wir in unserem Beispiel noch einen Schritt weiter und extrahieren wir die Rechnungsnummern. Dazu verwenden wir eine sehr einfache Regex, die auf jede 7-stellige Zahl passt:

    Muster : \b\d{7}\b

    Setzen Sie das Muster in A2 ein, und Sie erledigen die Aufgabe mit dieser kompakten und eleganten Formel:

    =RegExpExtract(A5, $A$2)

    Wenn ein Muster übereinstimmt, extrahiert die Formel eine Rechnungsnummer, wenn keine Übereinstimmung gefunden wird, wird nichts zurückgegeben.

    Weitere Beispiele finden Sie unter: Extrahieren von Zeichenfolgen in Excel mit Regex.

    Excel Regex-Ersetzungsfunktion

    Die RegExpReplace ersetzt die Werte, die einer Regex entsprechen, durch den von Ihnen angegebenen Text.

    RegExpReplace(text, muster, ersatz, [instance_num], [match_case])

    Wo:

    • Text (erforderlich) - die Textzeichenfolge, in der gesucht werden soll.
    • Muster (erforderlich) - der zu übereinstimmende reguläre Ausdruck.
    • Ersatz (erforderlich) - der Text, durch den die übereinstimmenden Teilzeichenfolgen ersetzt werden sollen.
    • Instanz_num (optional) - die zu ersetzende Instanz; die Voreinstellung ist "alle Übereinstimmungen".
    • Match_case (optional) - steuert, ob die Groß- und Kleinschreibung berücksichtigt (TRUE oder weggelassen) oder ignoriert (FALSE) werden soll.

    Der Code der Funktion ist hier verfügbar.

    Beispiel: Ersetzen oder Entfernen von Zeichenketten mit Regexen

    Einige unserer Datensätze enthalten Kreditkartennummern. Diese Informationen sind vertraulich, und Sie möchten sie vielleicht durch etwas anderes ersetzen oder ganz löschen. Beide Aufgaben können mit Hilfe des RegExpReplace In einem zweiten Szenario werden wir durch eine leere Zeichenfolge ersetzen.

    In unserer Beispieltabelle haben alle Kartennummern 16 Ziffern, die in 4 Gruppen mit Leerzeichen getrennt geschrieben sind. Um sie zu finden, wiederholen wir das Muster mit diesem regulären Ausdruck:

    Muster : \b\d{4} \d{4} \d{4} \d{4}\b

    Zur Ersetzung wird die folgende Zeichenfolge verwendet:

    Ersatz : XXXX XXXX XXXX XXXX

    Und hier ist eine vollständige Formel für ersetzen. Kreditkartennummern mit unsensiblen Informationen:

    =RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")

    Mit der Regex und dem Ersatztext in getrennten Zellen (A2 und B2) funktioniert die Formel genauso gut:

    In Excel ist "Entfernen" ein Sonderfall von "Ersetzen". zu entfernen Kreditkartennummern, verwenden Sie einfach einen leeren String ("") für die Ersatz Argument:

    =RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4} \d{4}\b", "")

    Tipp: Um leere Zeilen in den Ergebnissen zu entfernen, können Sie eine andere RegExpReplace-Funktion verwenden, wie in diesem Beispiel gezeigt: How to remove blank lines using regex.

    Weitere Informationen finden Sie unter:

    • Ersetzen von Zeichenketten in Excel mit Regex
    • Entfernen von Zeichenketten mit regex
    • Entfernen von Leerzeichen mit Regexen

    Regex Tools zum Vergleichen, Extrahieren, Ersetzen und Entfernen von Teilstrings

    Die Benutzer unserer Ultimate Suite können alle Möglichkeiten der regulären Ausdrücke nutzen, ohne eine einzige Zeile Code in ihre Arbeitsmappen einfügen zu müssen. Der gesamte erforderliche Code wird von unseren Entwicklern geschrieben und bei der Installation nahtlos in Ihr Excel integriert.

    Im Gegensatz zu den oben beschriebenen VBA-Funktionen basieren die Funktionen von Ultimate Suite auf .NET, was zwei wesentliche Vorteile mit sich bringt:

    1. Sie können reguläre Ausdrücke in normalen .xlsx-Arbeitsmappen verwenden, ohne VBA-Code hinzuzufügen und sie als makroaktivierte Dateien speichern zu müssen.
    2. NET Regex-Engine unterstützt klassische reguläre Ausdrücke mit vollem Funktionsumfang, so dass Sie anspruchsvollere Muster konstruieren können.

    Wie man Regex in Excel verwendet

    Wenn die Ultimate Suite installiert ist, ist die Verwendung regulärer Ausdrücke in Excel so einfach wie diese beiden Schritte:

    1. Auf der Ablebits Daten auf der Registerkarte Text Gruppe, klicken Sie auf Regex-Werkzeuge .

    2. Auf der Regex-Werkzeuge gehen Sie wie folgt vor:
      • Wählen Sie die Quelldaten aus.
      • Geben Sie Ihr Regex-Muster ein.
      • Wählen Sie die gewünschte Option: Spiel , Auszug , entfernen oder Ersetzen Sie .
      • Um das Ergebnis als Formel und nicht als Wert zu erhalten, wählen Sie die Option Als Formel einfügen Kontrollkästchen.
      • Drücken Sie die Aktionstaste.

      Um z. B. Kreditkartennummern aus den Zellen A2:A6 zu entfernen, nehmen wir diese Einstellungen vor:

    Im Handumdrehen wird eine AblebitsRegex-Funktion in eine neue Spalte rechts von den ursprünglichen Daten eingefügt. In unserem Fall lautet die Formel:

    =AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")

    Sobald die Formel vorhanden ist, können Sie sie wie jede native Formel bearbeiten, kopieren oder verschieben.

    Wie man eine Regex-Formel direkt in eine Zelle einfügt

    Die AblebitsRegex-Funktionen können auch direkt in eine Zelle eingefügt werden, ohne die Benutzeroberfläche des Add-Ins zu verwenden, und zwar folgendermaßen

    1. Klicken Sie auf die fx auf der Symbolleiste oder Funktion einfügen über die Formeln tab.
    2. In der Funktion einfügen wählen Sie im Dialogfenster die Option AblebitsUDFs Kategorie, wählen Sie die gewünschte Funktion und klicken Sie auf OK.

    3. Definieren Sie die Argumente der Funktion wie gewohnt und klicken Sie auf OK. Fertig!

    Weitere Informationen finden Sie unter Regex-Tools für Excel.

    So verwenden Sie reguläre Ausdrücke, um Text in Excel-Zellen abzugleichen, zu extrahieren, zu ersetzen und zu entfernen. 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 - Formelbeispiele (.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.