JavaScript-Regex auf der einen Seite, Python `re` auf der anderen. Keine Kopfübersetzung.
Du hast eine Regex in JavaScript: `/(\w+)@(\w+\.com)/gi`. Jetzt brauchst du dasselbe Pattern in einem Python-Skript. Du sitzt zehn Minuten und überlegst, ob `i` zu `re.I` oder `re.IGNORECASE` wird, ob Named Groups noch genauso funktionieren, ob Python Lookbehind so versteht wie JS. Sinnlose Reibung jedes Mal.
Pastet die JS-Regex links rein, du kriegst `re.compile(r"...", re.IGNORECASE)` rechts. Mit dem korrekten Flag-Mapping, der richtigen Named-Group-Syntax (`(?<name>...)` -> `(?P<name>...)`), und einer Warnliste, wenn etwas nicht sauber übersetzbar ist: Lookbehind mit variabler Breite, atomare Gruppen, das Sticky-Flag `y`, das globale `g`.
Drei Modi in einem Tool: JS -> Python, Python -> JS und Inline `(?i)` <-> `re.IGNORECASE` für den Moment, wenn du jemand anderes Pattern nur lesen willst. Plus ein Live-Tester unter jedem Panel: Sample pasten, Matches highlighten, mit einem Klick kopieren. Alles im Browser, dein Pattern verlässt die Seite nie.
So nutzt du das Tool
- Modus wählen in der segmentierten Leiste oben: JS -> Python, wenn du eine JavaScript-Regex hast und Python brauchst, Python -> JS andersrum, Inline-Flags <-> re.flags, wenn du nur die Flag-Notation übersetzen willst.
- Pattern links pasten. Für JS nimmt das Tool das volle Literal (`/.../flags`) oder nur den Body, der Parser erkennt das. Für Python pastest du das nackte Pattern oder einen vollen `re.compile(r"...", re.I | re.M)`-Aufruf.
- Rechtes Panel lesen. Du kriegst den konvertierten Code in einem kopierbereiten Block, mit den übersetzten Flags für die andere Engine.
- Warnungs-Section prüfen. Jeder Unterschied, der wichtig ist (das `g`-Flag, Sticky, Lookbehind-Breite, Named-Group-Syntax), erscheint als kurze Notiz, damit du weißt, worauf zu achten ist.
- Output-Format umschalten. Für Python wählst du zwischen vollem `re.compile(...)` und nacktem Pattern + Flag-Liste. Für JS zwischen Literal `/.../flags` und `new RegExp("...", "...")`. Nimm das, was du pasten willst.
- Tester unten nutzen: Sample-Text pasten, die Engine läuft die Regex live und highlightet Treffer. Achtung: der Tester nutzt die JS-Engine auf beiden Seiten, fortgeschrittene Features verhalten sich, wie sie es in V8 tun.
- Sample drüber klicken, um einen typischen Fall vorauszufüllen (Email, URL, Datum mit Named Groups, Lookbehind). Praktisch zum Prüfen, bevor du dem Konverter mit deinem eigenen Pattern vertraust.
Wann das nützlich ist
Fünf Situationen, in denen der Konverter fünf bis fünfzehn Minuten und einen Stack-Overflow-Tab spart:
- Frontend-Validator zum Backend portieren. Du hast eine JS-Regex für Emails oder Telefonnummern in einem Formular und brauchst denselben Check in einem Python-API-Endpoint. Pasten, `re.compile(...)` kriegen, die Warnungen sagen dir, ob `g` zählt oder ob deine Named Groups in der Ziel-Python-Version funktionieren.
- Ein Skript in einer Sprache lesen, in der du normal nicht schreibst. Du hast einen `scraper.py` geerbt voller `re.findall(r"(?P<title>.+?)</h1>", html, re.S)` und willst das Pattern schnell in DevTools testen. In Python -> JS pasten, das `/.../`-Literal kopieren, in die Browser-Konsole droppen.
- Stack-Overflow-Antworten übersetzen. Die Hälfte der Regex-Antworten nutzt Python-Syntax, auch wenn die Frage zu JS war, und andersrum. Der Konverter ist schneller als per Hand und fängt Fallstricke wie `(?P<name>...)` ab, die du sonst übersiehst.
- Mit dem `x` / `re.VERBOSE`-Flag arbeiten. Ein Kollege hat eine schöne mehrzeilige Python-Regex mit Kommentaren via `re.VERBOSE` geschrieben. JS hat den Modus nicht. Der Konverter warnt dich vorab und zeigt die flache Version zum Pasten.
- Zwischen Python-Versionen migrieren. Du hast `(?<name>...)` in Python 3.12 geschrieben und ein Kollege ist noch auf 3.10. In einem beliebigen Modus pasten, der Konverter schreibt es ins sicherere `(?P<name>...)` um und legt eine Warnung dazu, damit der Wechsel bewusst passiert.