Zum Hauptinhalt springen
SubtitleMatrix

Regex-Ersetzung in Untertiteln

Text und GestaltungMit regulärem Ausdruck ersetzen
Oder Untertiteltext einfügen

Optionen

Ein regulärer Ausdruck, verglichen mit dem Text jedes Blocks. Jeder Treffer wird ersetzt. Die beiden Seiten in diesem Abschnitt teilen sich das Feld: Die eine öffnet es leer für ein Muster, das Sie schon haben, die andere startet mit einem Muster, das Sie in beide Richtungen bearbeiten können.

Wozu jeder Treffer wird. Leer lassen, um jeden Treffer zu löschen. Anders als bei der Seite zum wörtlichen Suchen und Ersetzen ist ein Dollarzeichen hier besonders: $1 steht für die erste Gruppe in Klammern des Treffers, $& für den ganzen Treffer und $$ für ein wörtliches Dollarzeichen.

Die Buchstaben, mit denen das Muster kompiliert wird. g und u sind standardmäßig an: u lässt das Muster den Text zeichenweise statt codeeinheitenweise lesen, was \p{L} und Verwandten ihre Bedeutung gibt. Fügen Sie i hinzu, um die Groß- und Kleinschreibung zu ignorieren, m für Zeilenanker, s damit ein Punkt einen Zeilenumbruch trifft. Leeren Sie das Feld, um ganz ohne Flags zu kompilieren. Jeder andere Buchstabe wird abgelehnt statt ignoriert, denn ein Muster, das unter Flags läuft, die Sie nicht verlangt haben, ist ein Muster, das still etwas anderes bedeutet.

In welcher Bildrate die Zeitangaben gezählt werden. Auf den Formatseiten ist das, was MicroDVD braucht, denn es speichert Zeitangaben als Bildnummern. Auf den Bildraten-Seiten ist es die Rate, gegen die die Datei getaktet wurde — die Fassung, für die die Untertitel erstellt wurden —, und das zweite Feld der Seite nimmt die Rate des Videos auf, mit dem Sie sie verwenden wollen. 23,976, 24, 25, 29,97, 30, 50, 59,94 und 60 sind die üblichen. Ein falscher Wert verschiebt die gesamte Zeitachse, und auf den Bildraten-Seiten verschiebt er sie um einen Faktor statt um einen festen Betrag.

Füllen Sie Muster aus, um zu starten.

Diese Seite schreibt den Text innerhalb von Untertitelblöcken mit einem Muster um, das Sie selbst verfassen. Ein Muster ist keine feste Zeichenkette: \d+ bedeutet eine beliebige Folge von Ziffern, (cat|dog) bedeutet eines der beiden Wörter, und ein Punkt steht für ein beliebiges Zeichen. Jeder Treffer in jedem Block wird in einem Durchgang ersetzt, und die Seite meldet, wie viele Stellen sich geändert haben. Nur der Text bewegt sich – jede Start- und Endzeit wird genau so übernommen, wie sie war.

Auch das Ersatzfeld ist keine feste Zeichenkette. Ein Dollarzeichen darin ist besonders: $1 steht für das, was die erste Klammergruppe des Treffers erfasst hat, $& für den ganzen Treffer und $$ für ein wörtliches Dollarzeichen. Das erlaubt einer einzigen Regel, Tausende verschiedene Zeilen aufzuräumen – etwa das überflüssige Leerzeichen vor einem Satzzeichen zu löschen und das Satzzeichen zu behalten, weil die Gruppe genau dieses Zeichen erfasst hat.

Muster laufen mit g und u. g bedeutet, jeden Treffer zu finden statt nur den ersten; u lässt das Muster den Text Zeichen für Zeichen lesen statt Code-Einheit für Code-Einheit, und das macht \p{L} zu „ein Buchstabe“. Mit i wird die Groß-/Kleinschreibung ignoriert, mit m arbeiten Anker zeilenweise, mit s trifft ein Punkt auch einen Zeilenumbruch. Ein leeres Flag-Feld lässt das Muster ohne Flags laufen. Jeder andere Buchstabe lehnt den ganzen Lauf ab, statt still ignoriert zu werden, denn ein Muster, das unter nicht angeforderten Flags läuft, bedeutet leise etwas anderes.

Inline-Formatierung wird mitgenommen, wann immer es einen ehrlichen Platz dafür gibt: Ein Tag verschiebt sich, wenn die Bearbeitung außerhalb von ihm geschieht, und streckt sich, wenn sie in seinem Inneren geschieht. Überschreitet ein Treffer den Rand eines Tags, wird die Auszeichnung fallengelassen und im Verlustbericht gezählt, denn die Alternative wäre Kursivschrift um die falschen Wörter. Nichts wird hochgeladen, jede Datei wird in ihrem eigenen Format zurückgeschrieben, und eine ganze Staffel kann auf einmal durch die Warteschlange gehen.

Beispiele

Satzzeichen mit einer Fanggruppe behalten

Eingabe

1
00:00:01,000 --> 00:00:02,000
We stopped , and waited .

2
00:00:03,000 --> 00:00:04,000
Right !

Ausgabe

1
00:00:01,000 --> 00:00:02,000
We stopped, and waited.

2
00:00:03,000 --> 00:00:04,000
Right!

Das Muster ist eine Folge von Leerzeichen gefolgt von einem der Zeichen . , ! ? – und die Klammer macht dieses Satzzeichen zur ersten Gruppe, sodass $1 es zurücksetzt. Drei Treffer, drei Änderungen. Eine wörtliche Suche kann das überhaupt nicht ausdrücken: Sie kann nur eine feste Zeichenkette in eine andere feste verwandeln.

Ein Muster, beide Schreibweisen

Eingabe

The Colour of the sky.
colourless and calm.

Ausgabe

The color of the sky.
colorless and calm.

Mit i im Flag-Feld erfasst colour auch die großgeschriebene Variante. Man beachte, was das Flag nicht tut: Der Großbuchstabe am Zeilenanfang ist weg, weil ein Muster keine Ahnung hat, welche Aufgabe ein Wort im Satz hat. Ist der Großbuchstabe wichtig, braucht es eine zweite Regel.

Ein Treffer, der den Rand einer kursiven Spanne überschreitet

Eingabe

1
00:00:01,000 --> 00:00:04,000
<i>Hello there</i>, welcome aboard

Ausgabe

1
00:00:01,000 --> 00:00:04,000
Hello there. Welcome aboard

Der Treffer beginnt innerhalb der Kursivschrift und endet außerhalb, die Hälfte dessen, was die Auszeichnung umfasste, ist also weg und es bleibt kein korrekter Platz für sie. Sie wird fallengelassen und gezählt, statt um die falschen Buchstaben gelegt zu bleiben.

Häufige Fragen

Wie behalte ich einen Teil dessen, was das Muster getroffen hat?

Diesen Teil im Muster in Klammern setzen und im Ersatz als $1 darauf verweisen – $2 für die zweite Gruppe und so weiter. Das Muster \s+([.,!?]) mit dem Ersatz $1 löscht das Leerzeichen und behält das Satzzeichen, genau die Aufgabe, die eine feste Zeichenkette nicht erledigen kann. $& steht für den ganzen Treffer und $$ für ein Dollarzeichen, das tatsächlich im Text stehen soll.

Mit welchen Flags läuft das Muster?

g und u sind standardmäßig an. g findet jeden Treffer, statt beim ersten anzuhalten, und u lässt das Muster den Text Zeichen für Zeichen lesen, was \p{L}, \p{N} und Verwandten ihre Bedeutung gibt. i ergänzt die Suche ohne Rücksicht auf Groß-/Kleinschreibung, m lässt Anker zeilenweise arbeiten, s lässt einen Punkt einen Zeilenumbruch treffen. Ein leeres Feld läuft ganz ohne Flags. Jeder andere Buchstabe – x, y, d – lehnt den Lauf ab, statt ignoriert zu werden.

Ist das dasselbe wie die Suchen-und-Ersetzen-Seite?

Nein, und der Unterschied liegt darin, was im Feld steht. Jene Seite vergleicht Zeichen genau so, wie sie geschrieben sind, schiefgehen kann dort also nur, dass nichts gefunden wird. Diese Seite führt ein Programm aus, das in einem Durchgang Tausende Stellen treffen und alle umschreiben kann. Deshalb startet das Muster hier leer, deshalb werden unbekannte Flags abgelehnt, und deshalb sind es zwei Seiten: Dort ist eine ausgebliebene Ersetzung ein Tippfehler, hier könnte sie ein Muster sein, das leise etwas anderes bedeutete.

Was passiert, wenn sich zwei Treffer überlappen?

Der am weitesten links liegende gewinnt, und die Suche läuft dahinter weiter – so arbeitet jede Regex-Engine. aa gegen aaaa findet also zwei Treffer und nicht drei, und nach dem Ersetzen lautet der Text bb. Wer mit drei gerechnet hat, hat ein Muster geschrieben, das etwas beschreibt, was die Engine nicht kann; besser, das vor der Rückkehr der Datei zu wissen.

Schützt die Seite vor einem langsamen Muster?

Eine Familie lehnt sie ab, bevor irgendetwas läuft: eine Wiederholung auf eine Gruppe, die selbst schon unbegrenzt wiederholt, wie (a+)+ oder (\d+)+. Das sind die Muster, die einen Browser-Tab blockieren, und dreißig Zeichen Eingabe reichen dafür. Drei Formen werden nicht abgefangen und sollten von Hand gemieden werden – zwei überlappende Alternativen in einer wiederholten Gruppe wie (a|a)+, mehrere überlappende Wiederholungen nebeneinander wie a*a*a*b und riesige Zählwerte wie (a{100}){100}. Gegen eine Uhr wird nichts geprüft, weil eine Zeitgrenze dieselbe Datei auf einem schnellen Rechner anders ausgehen ließe als auf einem langsamen.

Was passiert mit Kursivschrift und anderer Formatierung beim Umschreiben?

Ein Tag außerhalb der Bearbeitung verschiebt sich mit dem Text, ein Tag, der die Bearbeitung enthält, streckt oder schrumpft entsprechend. Überschreitet ein Treffer den Rand eines Tags, bleibt kein korrekter Platz für die Auszeichnung, sie wird fallengelassen, und der Verlustbericht nennt die Anzahl. Karaoke-Timing wird fallengelassen, sobald ein Treffer es berührt, weil die silbenweise Aufteilung nicht mehr zu den Wörtern passt.

Kann ich das auf jedes Untertitelformat anwenden?

Ja. Das Muster wird auf den Text jedes Blocks angewandt, und alle zwölf Formate geben diesen Text heraus, eine SRT-Datei, eine WebVTT-Datei, eine ASS-Datei mit Stilen, ein LRC-Liedtextblatt oder ein schlichtes Transkript funktionieren also gleich. Jede Datei wird in dem Format zurückgeschrieben, in dem sie kam, und bei einer MicroDVD-Datei verwenden die Bildnummern die Bildrate aus dem Panel.

Verwandte Werkzeuge