Command Palette

Search for a command to run...

Regex Ersetzen: Finden und ersetzen Sie es durch einen regulären Ausdruck, ohne Ihren Editor zu berühren

Regex Ersetzen: Finden und ersetzen Sie es durch einen regulären Ausdruck, ohne Ihren Editor zu berühren

T
Toolz Team
|Aug 23, 2026|17 min lesen

Teil der Sammlung Regex

Die Aufgabe, die mich dazu gebracht hat, das zu bauen, war langweilig, genau deshalb hat es sich gelohnt, es zu automatisieren Ein Kunde hat mir einen 4.000 Zeilen langen Export in die Hand gedrückt, bei dem jedes Datum im amerikanischen Stil geschrieben wurde, 01/15/2024und das System, in das es ging, wollte ISO 2024-01-15. Ein einfaches Fund-and-Replace konnte es nicht berühren, denn es gab keine feste Zeichenfolge, nach der gesucht werden konnte - die Daten waren alle unterschiedlich Was sie teilten, war ein formen: zwei Ziffern, ein Schrägstrich, zwei Ziffern, ein Schrägstrich, vier Ziffern Genau so etwas passt ein regulärer Ausdruck, und genau so etwas schreibt ein Regex-Ersatz in einem Durchgang umIch habe die Datei in ein Scratch-Tool eingefügt, einen Ausdruck geschrieben, und das ganze Export-Flipped-Format in weniger als einer Sekunde.

Das ist der Job, der frei ist Regex ersetzen Werkzeug schon, und diese Anleitung ist die lange Version, wie man es gut benutzt Ich werde behandeln, was ein Regex-Ersatz eigentlich ist, wie man durch Capture Group-Backreferenzen Text umstrukturieren kann, anstatt ihn nur zu löschen, was jeder spezielle Ersatz-Token bedeutet, und die Fehler, die die Leute auf den Kopf stellen Es sitzt neben dem Regex-Tester Ich habe separat darüber geschrieben - der Tester sagt Ihnen, was ein Muster übereinstimmt, und dieses Tool schreibt neu, was es übereinstimmt. Wenn reguläre Ausdrücke selbst für Sie neu sind, beginnen Sie mit dem Leitfaden zu vollständigen Codierungstools Und komm zurück.

tl; dr: Eine Regex-Ersetzung stimmt Text für Muster ab und schreibt jedes Spiel mithilfe einer Ersatzzeichenfolge neu. Wickeln Sie die Teile, die Sie wiederverwenden möchten, in Klammern, um nummerierte Gruppen zu erstellen, und verweisen Sie dann auf sie im Ersatz mit $1, $2Und so weiter - das Muster (\d{4})-(\d{2})-(\d{2}) Mit Ersatz $3/$2/$1 Wendet 2024-01-15 in 15/01/2024. Schalten Sie die g Flag zum Ersetzen jeder Übereinstimmung, lassen Sie den Ersatz leer, um Übereinstimmungen zu löschen, und verwenden Sie $<name> Für benannte Gruppen Die Regex ersetzen Tool läuft komplett in Ihrem Browser und zeigt die Ersatzanzahl live an.

Was ist ein Regex-Ersatz?

Ein gewöhnliches Find-and-Replace funktioniert auf wörtlichem Text: Sie geben genau das gesuchte Wort und das genaue Wort ein, das Sie an seine Stelle setzen sollen. Es scheitert in dem Moment, in dem das, was Sie ändern möchten, keine feste Zeichenfolge, sondern ein Muster ist - ein Datum in einer von hundert Formen, eine Telefonnummer, ein HTML-Tag, ein nachfolgender Leerzeichenlauf, ein variabler Name, der einer Konvention folgt Ein regulärer Ausdruck beschreibt dieses Muster und ein Regex-Ersatz kombiniert es mit einer Vorlage, die angibt, wie jedes Spiel neu geschrieben werden soll.

Der Mechanismus hat zwei Hälften Die Muster Ist ein regulärer Ausdruck, mit dem die Engine Ihren Text scannt und dabei jeden Ort findet, an dem die Form auftritt Die Ersatz Ist eine Zeichenfolge, die für jede Übereinstimmung eingewechselt wird Im einfachsten Fall ist der Ersatz Klartext und jede Übereinstimmung wird zur gleichen Sache - nützlich, um beispielsweise jede Reihe von Tabulatoren und Leerzeichen in einem einzigen Leerzeichen zu normalisieren. Der mächtige Fall ist, wenn sich die Ersetzung auf Teile dessen bezieht, was abgeglichen wurde, sodass die Ausgabe aus der Eingabe erstellt wird und nicht eine feste Konstante ist. Das ist es, was eine Regex-Ersetzung von einem stumpfen Löschen und Umschreiben in ein echtes Umstrukturierungstool verwandelt.

Unter der Haube, die Regex ersetzen Werkzeug verwendet das JavaScript RegExp Motor und die String.prototype.replace Methode, die jeder Browser und Node.js versendet Das ist aus einem praktischen Grund wichtig: Das Verhalten, das Sie im Tool sehen, ist identisch mit dem Verhalten, das Sie erhalten, wenn Sie dasselbe Muster und Ersatz in Ihren eigenen JavaScript- oder TypeScript-Code einfügen Es gibt keinen separaten Geschmack, den Sie lernen können, und keine Überraschung, wenn Sie vom Scratch-Tool zur Produktion wechseln. Die Ersatzsyntax, die das Tool akzeptiert - $1, $&, $<name> Und der Rest - ist die genaue Syntax, die der Standard definiert und auf der dokumentiert ist MDN&#39;s String.replace-Referenzdrohen

Wie funktionieren Rückverweise von Erfassungsgruppen?

Dies ist die nützlichste Idee beim Regex-Ersatz und es lohnt sich, langsamer zu werden. Wenn Sie einen Teil eines Musters in Klammern setzen, erstellen Sie ein Fanggruppe. Die Engine merkt sich den Text, der der Gruppe entsprach, und nummeriert die Gruppen von links nach rechts beginnend bei eins. In der Ersatzzeichenfolge, $1 Bedeutet & quot; alles einfügen, was die erste erfasste Gruppe, &quot; $2 Der zweite, und so weiter bis zu $99drohen

Das Datumsbeispiel macht es konkret Das Muster (\d{4})-(\d{2})-(\d{2}) Drei Gruppen hat: das vierstellige Jahr, den zweistelligen Monat, und den zweistelligen Tag Wenn es passt 2024-01-15Gruppe eins gilt 2024Gruppe zwei gilt 01und Gruppe drei hält 15. Ein Ersatz von $3/$2/$1 Zusammengebaut dann eine neue Saite aus diesen Stücken in einer anderen Reihenfolge und mit verschiedenen Separatoren, wodurch erzeugt wird 15/01/2024. Es wurde nichts gelöscht und neu eingegeben - die Ausgabe wird aus den erfassten Fragmenten buchstäblich neu aufgebaut Ordnen Sie die Token neu, ändern Sie die Interpunktion zwischen ihnen, wickeln Sie sie in einen anderen Text ein, und Sie haben jedes Datum in der Datei mit einem Ausdruck neu formatiert.

Benannte Gruppen sind die gleiche Idee mit lesbaren Beschriftungen Statt Klammern zu zählen, schreibt man (?<year>\d{4}) und in der Ersetzung darauf verweisen als $<year>. Bei einem Muster mit zwei oder drei Gruppen sind die Zahlen in Ordnung, aber sobald Sie fünf oder sechs jonglieren, machen Namen sowohl das Muster als auch den Ersatz viel einfacher zu lesen und später zu ändern. Das Tool unterstützt beide austauschbar, sodass Sie mischen können $1 und $<name> Im gleichen Ersatz, wenn Sie mögen Wenn Sie zum ersten Mal ein Muster zusammenbauen und noch nicht sicher sind, welche Gruppen Sie benötigen, wird die Regex-Builder Hilft Ihnen, es Stück für Stück zu konstruieren, bevor Sie es hierher bringen, um den Ersatz auszuführen.

Was bedeuten die speziellen Ersatz-Token?

Das Dollarzeichen ist speziell innerhalb einer Ersatzzeichenfolge, und es führt einen kleinen Satz von Token ein, die über die nummerierten und benannten Gruppen hinausgehen. Wenn Sie sie kennen, können Sie nicht nach einem komplizierteren Muster greifen, als Sie benötigen.

$& Fügt die gesamte abgestimmte Teilzeichenfolge ein Es ist das, was Sie wollen, wenn Sie Übereinstimmungen einpacken oder annotieren, anstatt sie neu aufzubauen - ein Muster von \b\w+@\w+\.\w+\b Mit einem Ersatz von <$&> Stellt um jede E-Mail-Adresse eckige Klammern, ohne dass man das Ganze in einer Gruppe festhalten muss. $\`` (a backtick) inserts everything *before* the match, and $ & #39;(an apostrophe) inserts everything *after* it; these are rarely needed but occasionally exactly right. And because$is special, outputting a literal dollar sign requires doubling it:$$in the replacement produces a single$` in the output, was an dem Tag zählt, an dem Sie die Währung neu formatieren.

Es gibt eine Lösch-Idiom, die es wert ist, sich auf den Speicher festzulegen: Ein leerer Ersatz entfernt jede Übereinstimmung, mit dem globalen Flag an und dem frei gelassenen Feld Ersetzen löscht das Tool jedes Vorkommen des Musters aus dem TextDas ist die sauberste Art, etwas zu streifen - alle HTML-Tags mit <[^>]+>Jeder Nachlaufraum mit +$ Im Mehrzeilenmodus alle nicht-ziffern von einer Telefonnummer mit \D. Sie ersetzen nicht durch ein Leerzeichen oder einen Platzhalter; Sie ersetzen durch nichts, und das Streichholz verschwindet einfach.

Welche Flaggen sind für einen Ersatz wichtig?

Die Flaggen auf einem Regex verändern die Art der Anwendung, zwei davon dominieren den Austauschalltag, der Rest ist situativ, aber gelegentlich entscheidend.

Die globale Flagge, die g, ist die, die Sie am meisten umschalten werden Ohne sie, JavaScript&#39;s replace Änderungen nur die vorweg Übereinstimmung und lässt den Rest des Textes in Ruhe - das ist Standard String.replace Verhalten und überrascht Menschen, die einen Ersatz erwarten. Drehen g An und jede Übereinstimmung im Text wird neu geschrieben Das Tool ist standardmäßig global on, denn alles zu ersetzen ist das, was Menschen neunzehn von zwanzig Mal meinen, aber der Umschalter ist für die Zeiten da, die man wirklich nur das erste Vorkommen berühren möchte Die Ignorier-Fall-Flagge, i, macht das Muster unabhängig vom Buchstabenfall übereinstimmen, also error Auch Streichhölzer Error und ERROR - unerlässlich, wenn Sie die Protokollniveaus normalisieren oder eine inkonsistente Groß- und Kleinschreibung aufräumen.

Die mehrzeilige Flagge m, ändert, was die Anker ^ und $ Mittel: Wenn es an ist, passen sie jeweils zu Anfang und Ende säumen Statt des ganzen Textes, was man will, wenn man nachgestellte Leerzeichen abstreift oder jeder Zeile voranstellt Die dotAll-Flagge, die s, lässt den Punkt mit Zeilenumbrüchen übereinstimmen, so dass ein Muster Zeilenumbrüche überspannen kann - nützlich zum Umschreiben von mehrzeiligen Blöcken Die u (unicode) und y (klebrige) Flaggen sind für fortgeschrittene Fälle: u Korrekte Handhabung von Zeichen außerhalb der Basisebene und bestimmter Fluchtformen ermöglicht, und y Verankert jedes Spiel, versuchen genau die Position nach der vorherigen. Die folgende Vergleichstabelle fasst zusammen, wann jedes Spiel seinen Platz verdient.

Fahne Brief Wirkung auf einen Ersatz Typische Verwendung
global g Ersetzen Sie jedes Spiel, anstatt nur das erste Fast jeder Ersatz-Alle
Fall ignorieren i Übereinstimmung unabhängig vom Buchstabenfall Normalisierung der Protokollniveaus, Aufräumkapitalisierung
Mehrzeilig m ^ und $ Anker an jeder Linie Vorfixierungslinien, Entfernen von Nachlaufräumen
DotAll s Der Punkt passt auch zu Zeilenumbrüchen Mehrzeilige Blöcke umschreiben
Unicode u Korrekter Umgang mit Astralzeichen und \u{...} Emoji, nichtlateinische Schriften
Klebrig y Match nur an der aktuellen Position Tokenisierer, strenges sequentielles Parsen

Wann sollte ich regex replace anstelle eines einfachen find-and-replace verwenden?

Die Trennlinie ist einfach: Verwenden Sie ein einfaches Finden und Ersetzen, wenn Sie den genauen Text kennen, und greifen Sie nach Regex-Ersatz, wenn Sie die Form kennen, aber nicht den genauen Text. Wenn Sie jeden ändern 2023 auf 2024‘ein gewöhnlicher Ersatz ist schneller und sicherer, wenn man jedes vierstellige Jahr wertunabhängig wechselt, kann das nur ein Muster ausdrücken.

Drei Aufgabenfamilien fallen deutlich auf die Regex-Seite Die erste ist Neuformatierung(wo der Inhalt gleich bleibt, sich aber seine Anordnung ändert - Daten, Telefonnummern, geschriebene Namen & quot; Zuletzt, First&quot; das Sie als &quot; First Last.&quot; Erfassungsgruppen plus ein neu geordneter Ersatz behandeln all diese Der zweite ist Schüttgutabisolierung, wo Sie alles löschen, was einem Muster entspricht - Tags, Kommentare, Steuerzeichen, extra Leerzeichen - indem Sie es durch nichts ersetzen Der dritte ist Bedingte Bearbeitung in großem Maßstab, wo Sie jedes Vorkommen eines Musters einpacken, voranstellen oder annotieren $& Übereinstimmung zu halten und zu ihr hinzuzufügen Wenn die Transformation, die Sie sich beschreiben, das Wort & quot;every&quot; enthält, gefolgt von einer Beschreibung und nicht einer wörtlichen Zeichenfolge, befinden Sie sich im Regex-Ersatzgebiet.

Es gibt auch ein Workflow-Argument. Diese Bearbeitungen in Ihrem Code-Editor zu machen&#39; s find-and-replace funktioniert, aber es bearbeitet die Datei an Ort und Stelle, was bedeutet, dass ein Fehler ein Fehler in Ihrer echten Datei ist Durch Ausführen der Transformation in einem Scratch-Tool können Sie zuerst die Ausgabe und die Ersatzanzahl sehen, bevor Sie etwas festlegen, und dann das verifizierte Ergebnis wieder einfügen Denn die Regex ersetzen Tool läuft vollständig in Ihrem Browser und lädt nie hoch, was Sie einfügen. Die Verwendung ist auch dann sicher, wenn es sich bei dem Text um ein Produktionsprotokoll oder einen Kundenexport handelt - ein Punkt, den ich im vollständig darlege Leitfaden zur Datenprivatisierung für Online-Toolsdrohen

Was sind die häufigen Fehler bei regex replace?

Am häufigsten vergisst man die globale Flagge und fragt sich, warum sich nur das erste Match geändert hat. Wenn Ihr Ersatz fast nichts getan zu haben scheint - eine Bearbeitung, bei der Sie Dutzende erwartet haben - überprüfen Sie das g An ist Es ist eine so häufige Fahrt, dass das Tool es standardmäßig einstellt, aber in dem Moment, in dem Sie es ausschalten, um ein einzelnes Spiel anzuvisieren, denken Sie daran, es zurückzudrehen.

Das zweite ist ein wörtliches $1 Erscheinen in der Ausgabe, wo Sie erfassten Text erwartet haben Das bedeutet fast immer, dass die Gruppe, auf die Sie verweisen, nicht existiert - Ihr Muster hat keinen ersten Satz von Klammern, also gibt es nichts für $1 Einspringen, und die Engine lässt den Token so, wie er ist Die Korrektur besteht darin, das Teil, das Sie wiederverwenden möchten, in Klammern zu wickeln, um die Gruppe zu erstellen, und Gruppen von links ab einem zu zählen. Eine verwandte Falle zählt falsch, wenn Ihr Muster verschachtelte oder optionale Gruppen hat; Wenn die Nummerierung verwirrend wird, wechseln Sie zu benannten Gruppen, damit die Referenz eindeutig ist.

Der dritte Fehler ist ein Muster, das mehr übereinstimmt, als Sie beabsichtigt haben, normalerweise weil ein Quantifizierer gierig ist Ein Muster wie <.+> Soll zu einem HTML-Tag passen, wird von Anfang an glücklich übereinstimmen < zur letze > Auf der Linie, alles zwischen zwei Tags schlucken Das Heilmittel ist ein nicht gieriger Quantifizierer, <.+?>oder eine genauere Zeichenklasse <[^>]+>. Genau in dieser Situation verifizieren Sie das Muster in der Regex-Tester Zuerst schauen Sie sich an, was es hervorhebt, und führen Sie dann erst den Ersatz durch - eine Gewohnheit Regex-tester-führung Geht im Detail durch Die im Tool angezeigte Ersatzanzahl ist Ihre andere Absicherung: wenn sie weit mehr oder viel weniger Ersatz meldet als die Anzahl der Dinge, die Sie ändern wollten, ist das Muster falsch, nicht das Werkzeug.

Ein gearbeitetes Beispiel: Namen neu formatieren und Stripping Noise

Lassen Sie mich durch einen kleinen Job Ende zu Ende gehen, denn zu sehen, wie die Teile zusammenarbeiten, behebt die Idee besser als jede einzelne Regel Angenommen, Sie haben eine Liste von Kontakten, die als exportiert werden Doe, Jane und Smith, John, einer pro Zeile, und Sie möchten sie als Jane Doe und John Smithdrohen

Die Form jeder Zeile ist: einige Wortzeichen, ein Komma, ein Leerzeichen, dann mehr Wortzeichen Als Muster, das ist (\w+), (\w+), wobei der Nachname in Gruppe eins und der Vorname in Gruppe zwei erfasst wird Der Ersatz, der sie vertauscht und das Komma fallen lässt, ist $2 $1 - Gruppe zwei, ein Leerzeichen, Gruppe eins. Fügen Sie die Liste in die ein Regex ersetzen Werkzeug, geben Sie dieses Muster und den Ersatz ein, lassen Sie die globale Flagge eingeschaltet, und jede Zeile dreht sich zu & quot; First Last&quot; auf einmal Die Anzahl der Ersetzungen gibt Ihnen an, wie viele Zeilen berührt wurden, die Sie mit der Anzahl der Kontakte bereinigen können.

Jetzt sagen Sie, dass derselbe Export auf einigen Linien eine nachlaufende Leerzeichen hat, die Sie ebenfalls weghaben möchten. Das ist ein zweiter, separater Ersatz: Muster +$ Mit der Multiline-Flagge auf so $ Passt zum Ende jeder Zeile, und eine leere Ersetzung, damit die übereinstimmenden Leerzeichen gelöscht statt ersetzt werden Führen Sie es nach dem Namensaustausch aus und die Datei ist sauber Der Zwei-Pass-Ansatz - ein Ersatz zum Restrukturieren, einer zum Streichen - ist typisch, und weil Ihnen jeder Durchgang seine Ausgabe und Zählung anzeigt, bevor Sie ihn herauskopieren, raten Sie nie, ob die Transformation das getan hat, was Sie gemeint haben Wenn der neu geformte Text ein endgültiges visuelles Diff zum Original benötigt, um zu bestätigen, dass nichts anderes verschoben wurde, fügen Sie beide Versionen in das ein Textdiff Werkzeug. Für den breiteren Bausatz alltäglicher Dienstprogramme passt dies in die Webentwickler-Toolkit Sammelt die, nach denen ich am meisten greife.

Häufig gestellte Fragen

Wie finde und ersetze ich einen regulären Ausdruck im Netz? Geben Sie Ihr Muster ohne Schrägstriche in das Feld Suchen ein, schreiben Sie die Ersetzung in das Feld Ersetzen, wählen Sie Ihre Flags aus und fügen Sie Ihren Text ein Die neu geschriebene Ausgabe erscheint sofort und zeigt an, wie viele Ersetzungen ausgeführt wurden Alles passiert in Ihrem Browser, es wird also nichts hochgeladen.

Wie funktionieren Capture-Group-Backreferenzen im Replacement? Klammern in Ihrem Muster erstellen nummerierte Gruppen, und Sie verwenden sie im Ersatz mit $1, $2 und so weiter. Zum Beispiel wird das Muster (\d{4}) - (\d{2}) - (\d{2}) mit dem Ersatz $3/$2/$1 wird aus 2024-01-15 15/01/2024. Benannte Gruppen wie (?\d{4}) werden als $ bezeichnetdrohen

Wie ersetze ich alle Matches statt nur die ersten? Aktivieren Sie das g (globale) Flag Ohne es ersetzt JavaScript nur die erste Übereinstimmung, genau wie sich die String.replace Methode verhält, bei aktiviertem g wird jede Übereinstimmung im Text ersetzt, was die meisten replace-all-Aufgaben brauchen.

Wie lösche ich jedes Match, anstatt es zu ersetzen? Lassen Sie das Feld Ersetzen leer Mit eingeschaltetem globalen Flag wird jede Übereinstimmung aus dem Text entfernt Dies ist die sauberste Möglichkeit, Tags, Leerzeichenläufe oder unerwünschte Zeichen, die ein Muster gemeinsam haben, zu entfernen.

Was bedeuten die speziellen Token $&amp;, Backtick und Apostroph im Ersatz? $&amp; fügt den gesamten passenden Teilstring ein, ein Backtick fügt den Text vor dem Match ein, und ein Apostroph fügt den Text danach ein Um ein wörtliches Dollarzeichen auszugeben, schreiben Sie $$. Diese folgen den Standard-JavaScript-String. Ersetzen Sie spezielle Ersetzungsmuster.

Welchen Regex-Geschmack verwendet dieses Tool? Es verwendet die in Ihrem Browser integrierte JavaScript (ECMAScript) RegExp-Engine, die mit der in Node.js identisch ist. Die Ergebnisse hier stimmen überein, wie sich dasselbe Muster und dieselbe Ersetzung in JavaScript und TypeScript verhalten. JavaScript regex unterscheidet sich in einigen erweiterten Funktionen von PCRE, Python re und Java.

Warum produziert mein Ersatz statt des erfassten Textes buchstäblich 1 $? Ein buchstäbliches $1 in der Ausgabe bedeutet normalerweise, dass Ihr Muster keine erste Erfassungsgruppe hat, also gibt es nichts für $1, auf das Sie verweisen können Wickeln Sie den Teil, den Sie wiederverwenden möchten, in Klammern, um die Gruppe zu erstellen, und zählen Sie Gruppen von links nach rechts ab 1.

Ist es sicher, Regex-Ersatz auf sensiblen Daten auszuführen? Ja. Jegliches Abgleichen und Ersetzen erfolgt in JavaScript in Ihrem Browser, sodass kein Muster, kein Ersatz oder kein Text an einen Server gesendet wird, nichts protokolliert wird und das Tool mit deaktivierter Verbindung funktioniert. Sie können Protokolldateien, persönliche Daten oder proprietäre Formate sicher neu formatieren.


Dieser Leitfaden begleitet die kostenlose Regex ersetzen Tool auf Toolz.dev - keine Anmeldung, keine Uploads, funktioniert offline.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!