Inhaltsverzeichnis
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 Siehe auch: Zählen von Zeichen in Google Sheets |
? | 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:
- 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.
- 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:
- Auf der Ablebits Daten auf der Registerkarte Text Gruppe, klicken Sie auf Regex-Werkzeuge .
- 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
- Klicken Sie auf die fx auf der Symbolleiste oder Funktion einfügen über die Formeln tab.
- 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.
- 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)