Veröffentlicht · 9 Min. Lesezeit
Regex für Nicht-Entwickler: Ein praxisnaher Leitfaden
Ein freundliches, jargonarmes Regex-Tutorial für Autorinnen, Analysten, Marketer und alle, die in Suchen-und-Ersetzen leben. Lernen Sie die wichtige Syntax und schnappen Sie sich zehn einsatzbereite Rezepte.
Warum auch Nicht-Entwickler Regex mögen sollten
Wenn Sie jemals das Suchen-und-Ersetzen-Fenster in Word, Google Docs, Notion, einer Tabellenkalkulation oder Ihrem Lieblings-Texteditor geöffnet und gedacht haben "es muss einen schnelleren Weg geben", dann sind Sie genau die richtige Leserin für diesen Leitfaden. Regex, kurz für reguläre Ausdrücke, ist eine winzige Muster-Sprache, die Suchen-und-Ersetzen von einem stumpfen Werkzeug in ein Skalpell verwandelt. Statt nach einem einzelnen festen Wort zu suchen, beschreiben Sie die Form dessen, was Sie suchen: "jede Telefonnummer", "jede Zeile, die mit einem Datum beginnt", "alle E-Mail-Adressen in diesem unaufgeräumten Export".
Regex hat den Ruf, einschüchternd zu sein, vor allem weil Tutorials für Programmierer Ihnen im ersten Absatz zwanzig Symbole an den Kopf werfen. In Wahrheit können Sie mit etwa zehn Zeichen und einer Handvoll Mustern wahnsinnig produktiv sein. Dieser Artikel führt Sie durch diesen Kern und gibt Ihnen anschließend zehn Rezepte zum Kopieren, die Sie heute in das Suchen-und-Ersetzen-Feld nahezu jeder modernen App einfügen können.
Kurzer Hinweis, wo Regex funktioniert: in Microsoft Word (mit "Platzhalter verwenden" oder über die neuere Regex-Suche), in Google Docs ("Mit regulären Ausdrücken abgleichen"), in Notion (eingeschränkt), in VS Code, Sublime Text, BBEdit, Obsidian, in Google Sheets über REGEXMATCH und REGEXREPLACE, in Excel über Power Query und die neuen REGEX-Funktionen und in praktisch jedem Code-Editor und Online-Testwerkzeug. Manche Apps verwenden leicht unterschiedliche Dialekte, aber neunzig Prozent von dem, was Sie hier lernen, funktioniert überall.
Was ist ein regex eigentlich?
Ein regulärer Ausdruck ist ein Muster. Sie geben das Muster einer Suchmaschine, und sie gibt Ihnen jedes Textstück zurück, das auf dieses Muster passt. Das einfachste mögliche regex ist ein wörtliches Wort. Das Muster cat findet die Buchstaben c, a, t in dieser Reihenfolge. So weit, so langweilig - das ist nur normales Suchen-und-Ersetzen.
Die Magie beginnt, wenn Sie Sonderzeichen einbauen, sogenannte Metazeichen. Diese stehen nicht für sich selbst; sie beschreiben Kategorien oder Regeln. Ein Punkt etwa bedeutet "ein beliebiges einzelnes Zeichen". Das Muster c.t passt nun auf cat, cot, cut, c5t und sogar c#t. Plötzlich erledigt ein Muster die Arbeit von Dutzenden Suchen.
Das ist das gesamte mentale Modell. Ein regex ist eine wörtliche Zeichenkette, in der einige Zeichen aufgewertet sind, um etwas Allgemeineres zu bedeuten. Lernen Sie, was diese aufgewerteten Zeichen tun, und Sie können fast jedes Muster lesen und schreiben.
Die wichtigsten Bausteine zum Auswendiglernen
- . (Punkt) passt auf jedes einzelne Zeichen außer einem Zeilenumbruch.
- * bedeutet "null oder mehr von der vorherigen Sache". a* passt auf einen leeren String, a, aa, aaa und so weiter.
- + bedeutet "eins oder mehr von der vorherigen Sache". a+ passt auf a, aa, aaa, aber nicht auf einen leeren String.
- ? bedeutet "null oder eins", also optional. colou?r passt sowohl auf color als auch auf colour.
- ^ verankert das Muster am Zeilenanfang. ^Hello findet Hello nur, wenn es eine Zeile beginnt.
- $ verankert am Zeilenende. \.$ findet jede Zeile, die mit einem Punkt endet.
- [abc] ist eine Zeichenklasse. Sie passt auf ein Zeichen, das a, b oder c ist. [a-z] passt auf jeden Kleinbuchstaben, [0-9] auf jede Ziffer, [A-Za-z0-9] auf jeden Buchstaben oder jede Ziffer.
- [^abc] mit einem Caret innerhalb der eckigen Klammern bedeutet "jedes Zeichen außer a, b oder c".
- \d ist die Kurzform für jede Ziffer, \w für jedes Wortzeichen (Buchstaben, Ziffern, Unterstrich), \s für jeden Leerraum (Leerzeichen, Tab, Zeilenumbruch). Ihre Großbuchstaben-Gegenstücke \D, \W, \S bedeuten das Gegenteil.
- Klammern ( ) bilden eine Gruppe, sowohl um Quantifizierer auf mehrere Zeichen auf einmal anzuwenden, als auch um Text zu erfassen, den Sie in einer Ersetzung wiederverwenden möchten.
- Der senkrechte Strich | bedeutet ODER. cat|dog passt auf cat oder dog.
- Ein Backslash \ escaped ein Sonderzeichen, damit es wörtlich passt. Um einen echten Punkt zu finden, schreiben Sie \. Um eine wörtliche Klammer zu finden, schreiben Sie \(.
Anker, Quantifizierer und die Gier-Falle
Anker (^ und $) sind das Geheimnis präziser Muster. Ohne sie schwebt Ihr regex irgendwo im Text und neigt dazu, mehr zu treffen, als Sie wollten. Mit ihnen heften Sie das Muster an Anfang oder Ende einer Zeile, was meist genau das ist, was Sie meinen, wenn Sie sagen "jede Zeile, die mit einer Zahl beginnt".
Quantifizierer (*, +, ? und die Klammerform wie {2,4}) steuern, wie oft sich die vorherige Sache wiederholt. Wichtig zu wissen: Sie sind standardmäßig gierig - sie greifen sich so viel wie möglich. Wenn Sie <.+> schreiben und auf <b>hi</b> anwenden, erwarten Sie vielleicht <b> und </b> als zwei separate Treffer. Tatsächlich wird das gesamte <b>hi</b> auf einmal getroffen, weil + gierig ist. Fügen Sie ein Fragezeichen hinzu, <.+?>, und der Quantifizierer wird faul und nimmt so wenig wie möglich. Dieser eine Trick spart enorm viel Debugging-Zeit.
Gruppen und Rückverweise für Suchen-und-Ersetzen
Klammern erfüllen zwei Aufgaben. Erstens lassen sie Sie ein Stück quantifizieren: (ab)+ passt auf ab, abab, ababab. Zweitens, und weit nützlicher, erfassen sie das, was sie treffen, in einem nummerierten Slot, auf den Sie sich im Ersetzungsfeld beziehen können. Die erste Klammergruppe wird in den meisten Editoren zu $1 (oder \1 in manchen), die zweite zu $2 und so weiter.
So ordnen Sie Text um. Angenommen, Ihre Tabelle hat Namen im Format Nachname, Vorname und Sie wollen Vorname Nachname. Suchen Sie nach ([A-Za-z]+), ([A-Za-z]+) und ersetzen Sie durch $2 $1. Fertig, in einem Rutsch, über Tausende Zeilen. Fast jedes Rezept weiter unten nutzt denselben Trick, daher lohnt es sich, sich damit anzufreunden: Klammern links, Dollar-Zahlen rechts.
Rezept 1: jede E-Mail-Adresse aus unsauberem Text extrahieren
E-Mail-Adressen sind allgegenwärtig in Exporten, Signaturblöcken und CRM-Dumps. Dieses Muster ist ein vernünftiger Standard. Es ist nicht RFC-perfekt (kein Regex ist es wirklich), erfasst aber jede realistische Adresse in normalen Dokumenten.
[\w.+-]+@[\w-]+\.[\w.-]+Rezept 2: Telefonnummern in jedem gängigen Format finden
Telefonnummern sind ein wunderbares Beispiel dafür, wie Regex unsaubere Eingaben bändigt. Das untenstehende Muster trifft Nummern in den Formaten 555-123-4567, (555) 123 4567, +1 555.123.4567 und die meisten Varianten dazwischen. Passen Sie das führende + und die Ländervorwahl an, wenn Sie nur Ortsnummern brauchen.
\+?\d{1,3}?[\s.-]?\(?\d{2,4}\)?[\s.-]?\d{3,4}[\s.-]?\d{3,4}Rezept 3: Datumsformat von JJJJ-MM-TT in TT/MM/JJJJ ändern
Das ist der klassische Trick mit Gruppen und Rückverweisen. Erfassen Sie jeden Teil des Datums und ordnen Sie ihn im Ersetzungsfeld um. Fügen Sie das untenstehende Muster in das Suchen-Feld ein; in das Ersetzen-Feld fügen Sie $3/$2/$1 ein.
(\d{4})-(\d{2})-(\d{2})Rezept 4: alle Leerzeilen aus einem Dokument entfernen
Lang eingefügter Text bringt oft zusätzliche Leerzeilen mit, die die Seitenzahl verdoppeln oder verdreifachen. Das untenstehende Muster trifft eine Zeile, die nichts außer optionalem Leerraum und einem Zeilenumbruch enthält. Ersetzen Sie durch nichts (lassen Sie das Ersetzen-Feld leer), und Ihr Dokument fällt auf einzeilige Abstände zusammen.
^\s*\nRezept 5: doppelte, dreifache oder ausufernde Leerzeichen zu einem zusammenfassen
OCR-Exporte, kopierte PDFs und alte Word-Dokumente sind berüchtigt dafür, doppelte Leerzeichen zwischen Wörter zu streuen. Suchen Sie zwei oder mehr aufeinanderfolgende Leerzeichen und ersetzen Sie durch ein einzelnes Leerzeichen.
{2,}Rezept 6: jede URL aus einem Textblock herausziehen
Sie müssen jeden Link aus einem Artikel, einem E-Mail-Export oder einem Chat-Log holen? Dieses Muster trifft http- und https-URLs, einschließlich Pfaden und Query-Strings. Kombinieren Sie es mit der "alle Treffer kopieren"-Funktion Ihres Editors oder fügen Sie die erfassten Treffer in ein frisches Dokument ein.
https?://[\w.-]+(?:/[\w./?=&%#-]*)?Rezept 7: den ersten Buchstaben jedes Namens in einer Liste großschreiben
Wenn Sie eine Spalte voller Namen in Kleinbuchstaben haben (jane doe, mark twain), können Sie die Groß-/Kleinschreibung in zwei Durchgängen korrigieren. Suchen Sie zuerst nach dem untenstehenden Muster und erfassen Sie den ersten Buchstaben jedes Wortes. Die meisten Editoren erlauben dann das Ersetzen durch \u$1 (Großschreibung der ersten Erfassung). Falls Ihrer das nicht kann, lassen Sie die Liste durch einen dedizierten Groß-/Kleinschreibungs-Konverter laufen und bringen Sie sie zurück. Multilities liefert einen kleinen case-converter, der das in einem Klick erledigt.
\b([a-z])Rezept 8: nur Zeilen behalten, die eine Zahl enthalten
Manche Editoren erlauben das Löschen jeder Zeile, die nicht auf ein regex passt. Mit dem untenstehenden Muster kombiniert können Sie eine lange Logdatei oder ein Notizen-Dokument auf die Zeilen reduzieren, die eine Zahl enthalten, was wunderbar ist, um aus einer PDF eingefügte Kontoauszüge aufzuräumen.
^.*\d+.*$Rezept 9: Leerräume am Ende jeder Zeile vereinheitlichen
Nachgestellte Leerzeichen sind unsichtbar, aber sie brechen Diff-Tools, E-Mail-Signaturen und Code-Kommentare. Finden Sie sie und ersetzen Sie sie durch nichts. Das Muster trifft eines oder mehrere Leerzeichen oder Tabs, die unmittelbar vor dem Zeilenende stehen.
[ \t]+$Rezept 10: Hashtags aus einem Social-Media-Export extrahieren
Marketing-Teams exportieren Tweets, LinkedIn-Posts und Instagram-Captions und wollen zählen, welche Hashtags aufgetaucht sind. Das untenstehende Muster findet ein # unmittelbar gefolgt von einem oder mehr Wortzeichen, was jeden realistischen Hashtag erfasst, ohne die umgebende Interpunktion mitzuziehen.
#\w+Wie Sie das in Ihrem Tool tatsächlich ausprobieren
In Google Docs öffnen Sie Bearbeiten, dann Suchen und ersetzen, und setzen das Häkchen bei "Mit regulären Ausdrücken abgleichen". In Microsoft Word öffnen Sie den Dialog Suchen und Ersetzen, klappen ihn auf und setzen das Häkchen bei "Platzhalter verwenden" (Words Platzhalter-Dialekt ist ähnlich, aber nicht identisch, daher müssen die obigen Muster dort eventuell angepasst werden). In Notion wird regex in einigen Datenbankeigenschaften und über Integrationen unterstützt, doch die Suchleiste selbst ist wörtlich.
In Google Sheets verpacken Sie das Muster in REGEXMATCH, REGEXEXTRACT oder REGEXREPLACE: =REGEXEXTRACT(A2; "[\w.+-]+@[\w-]+\.[\w.-]+") zieht die E-Mail aus Zelle A2. Excels neuere Funktionen REGEXEXTRACT, REGEXREPLACE und REGEXTEST verhalten sich ähnlich. In VS Code, Sublime und den meisten Code-Editoren klicken Sie das .*-Symbol in der Suchleiste, um in den Regex-Modus zu wechseln.
Wenn ein Muster sich daneben benimmt, starren Sie es nicht an. Werfen Sie es in einen Regex-Tester, der Treffer beim Tippen hervorhebt. Multilities bietet einen kostenlosen /tools/regex-tester genau dafür und ein /tools/find-replace-Tool, das Ihre Muster über einen eingefügten Textblock laufen lässt, ohne das Original-Dokument zu berühren. Iterationen in einem Tester dauern Sekunden; Iterationen in Word mit Rückgängig dauern Minuten.
Häufige Fehler und wie Sie sie vermeiden
- Den Punkt nicht zu escapen. Wenn Sie einen wörtlichen Punkt wollen (in einem Domainnamen, einer Dateiendung oder einem Satz), schreiben Sie \. Der nackte Punkt trifft alles.
- .* zu verwenden, wenn Sie \S+ oder [^,]+ meinen. Das Punkt-Stern-Muster ist gierig und verschluckt oft mehr, als Sie wollten, vor allem über Kommas, Anführungszeichen oder HTML-Tags hinweg.
- Mit ^ und $ zu verankern, aber zu vergessen, dass ^ und $ in manchen Tools pro Zeile und in anderen pro Dokument wirken. Bei unerwarteten Treffern prüfen Sie, ob Ihr Editor einen "Multiline"- oder "Dotall"-Schalter hat.
- Dialekte zu vermischen. JavaScript, Python, PCRE, Word-Platzhalter und POSIX-Regex teilen die meiste Syntax, unterscheiden sich aber in Randfällen wie Lookarounds und benannten Gruppen. Wenn etwas in einer App nicht mehr funktioniert, ist meist der Dialekt schuld.
- Keine Klammern für die Ersetzung zu nutzen. Wenn Sie einen Teil des Treffers behalten wollen, müssen Sie ihn erfassen. Ohne Klammern können Sie sich nicht mit $1 oder \1 darauf beziehen.
Ein kurzer Workflow, der Sie schnell macht
Wenn Sie ein Dokument bereinigen müssen, beginnen Sie nicht damit, das perfekte regex zu schreiben. Wählen Sie zunächst zwei oder drei Beispielzeilen des unsauberen Texts aus und fügen Sie sie in einen Regex-Tester ein. Tippen Sie eine wörtliche Version eines Beispiels und werten Sie dann ein Stück nach dem anderen auf: Ersetzen Sie die Ziffern durch \d+, ersetzen Sie den variablen Namen durch \w+, ersetzen Sie die variable Interpunktion durch eine Zeichenklasse. Prüfen Sie nach jeder Aufwertung, dass der Testtext weiterhin trifft und Sie nicht angefangen haben, Dinge zu erfassen, die Sie nicht wollten.
Wenn das Muster passt, kopieren Sie es in das Suchen-Feld des echten Dokuments und führen Sie eine einzelne Ersetzung aus, um zu sehen, ob es sich im Maßstab gleich verhält. Wenn das Dokument wichtig ist, arbeiten Sie an einer Kopie und nutzen Sie Rückgängig aggressiv. Innerhalb einer Woche, nachdem Sie das zwei- oder dreimal gemacht haben, werden Sie Muster aus dem Gedächtnis für die Aufräumarbeiten schreiben, die Sie am häufigsten tun, und das Erste, wonach Sie in jedem unsauberen Export greifen, wird kein manuelles Klick-Klick-Klick mehr sein, sondern ein winziges Muster, das alles auf einmal erledigt.
Wo es von hier aus weitergeht
Die obigen Muster und Rezepte decken die große Mehrheit der alltäglichen Textbereinigungs-, Extraktions- und Umformatierungsaufgaben ab. Wenn Sie tiefer einsteigen wollen, schlagen Sie Lookaheads ((?=...)), Lookbehinds ((?<=...)), nicht erfassende Gruppen ((?:...)) und benannte Erfassungen ((?<year>\d{4})) nach. Sie sind für die tägliche Arbeit nicht nötig, eröffnen aber elegantere Muster, wenn Sie auf wirklich knifflige Texte treffen.
Regex belohnt kurzes, häufiges Üben mehr als jede andere technische Fähigkeit. Halten Sie eine Notizdatei mit den fünf Rezepten bereit, die Sie am häufigsten brauchen, fügen Sie neue ein, sobald Sie welche entdecken, und nach ein paar Monaten werden Sie die Person im Büro sein, die alle fragen, wenn ihre Tabelle ein Chaos ist. Das ist ein überraschend angenehmer Ort.