Gå til hovedindholdet
SubtitleMatrix

Regex-erstat i undertekster

Tekst og formateringErstat med regulært udtryk
Eller indsæt underteksttekst

Indstillinger

Et regulært udtryk, der matches mod teksten i hver tekstblok. Hver forekomst erstattes. De to sider i dette afsnit deler boksen: den ene åbner den tom til et mønster, du allerede har, den anden starter den med et mønster, du kan redigere begge veje.

Hvad hver forekomst bliver til. Lad den stå tom for at slette hver forekomst. I modsætning til siden med bogstavelig søg og erstat er et dollartegn her særligt: $1 står for den første gruppe i parentes af forekomsten, $& for hele forekomsten og $$ for et bogstaveligt dollartegn.

De bogstaver, mønsteret kompileres med. g og u er slået til som standard: u får mønsteret til at læse teksten ét tegn ad gangen i stedet for én kodeenhed ad gangen, hvilket er det, der får \p{L} og lignende til at betyde, hvad de siger. Tilføj i for at ignorere store og små bogstaver, m for linjeankre, s for at lade en prik matche et linjeskift. Ryd boksen for at kompilere uden flag overhovedet. Ethvert andet bogstav afvises i stedet for at blive ignoreret, fordi et mønster, der kører med flag, du ikke bad om, er et mønster, der stiltiende betyder noget andet.

Hvilken billedhastighed tiderne tælles i. På formatsiderne er det, hvad MicroDVD har brug for, fordi formatet gemmer tider som billednummer. På siderne om billedhastighed er det den hastighed, filen blev timet efter – den version, underteksterne blev lavet til – og sidens anden boks tager hastigheden for den video, du skal bruge dem med. 23,976, 24, 25, 29,97, 30, 50, 59,94 og 60 er de almindelige. Tager man fejl, forskydes hele tidslinjen, og på siderne om billedhastighed forskydes den med et forhold i stedet for et fast beløb.

Udfyld Mønster for at køre.

Denne side skriver teksten inde i undertekstens tekstblokke om med et mønster, du selv skriver. Et mønster er ikke en fast tekst: `\d+` betyder en vilkårlig række cifre, `(kat|hund)` betyder et af ordene, og en prik står for et vilkårligt tegn. Hvert match, i hver tekstblok, erstattes i ét gennemløb, og siden rapporterer, hvor mange steder der blev ændret. Kun teksten flytter sig — hver start- og sluttid føres med præcis som den var.

Erstatningsfeltet er heller ikke en fast tekst. Et dollartegn i det er særligt: `$1` står for det, den første gruppe i parentes fangede, `$&` for hele matchet og `$$` for et rigtigt dollartegn. Det er det, der lader én regel rydde tusindvis af forskellige linjer — fjerne det løse mellemrum før et punktum og beholde tegnsætningen, fordi det er tegnsætningen, gruppen fangede.

Mønstre kører med `g` og `u` slået til. `g` betyder, at alle match findes frem for kun det første; `u` får mønstret til at læse teksten ét tegn ad gangen frem for én kodeenhed ad gangen, og det er det, der gør `\p{L}` til »et bogstav«. Tilføj `i` for at ignorere store og små bogstaver, `m` for at lade ankrene virke linje for linje, `s` for at lade en prik matche et linjeskift. Tøm feltet for at køre uden nogen af dem. Ethvert andet bogstav afviser hele kørslen frem for at blive ignoreret, fordi et mønster, der kører med flag, du ikke bad om, er et mønster, der stille betyder noget andet.

Indlejret formatering følger med, når der er et ærligt sted til den: en tag flytter sig, når redigeringen sker uden for den, og strækkes, når redigeringen sker inde i den. Når et match krydser kanten af en tag, droppes markeringen og tælles i tabsrapporten, fordi alternativet er kursiv viklet rundt om de forkerte ord. Intet uploades, hver fil skrives tilbage i sit eget format, og en hel sæson kan gå gennem køen på én gang.

Eksempler

Behold tegnsætningen med en fangstgruppe

Input

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

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

Resultat

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

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

Mønstret er en række mellemrum efterfulgt af et af tegnene ., ! eller ? — og parentesen gør det tegn til den første gruppe, så `$1` sætter det tilbage. Tre match, tre ændringer. En bogstavelig søgning kan slet ikke udtrykke dette: den kan kun lave én fast tekst om til en anden fast tekst.

Ét mønster, begge stavemåder

Input

The Colour of the sky.
colourless and calm.

Resultat

The color of the sky.
colorless and calm.

Med `i` i flagfeltet fanger `colour` også stavemåden med stort begyndelsesbogstav. Læg mærke til, hvad flaget ikke gør: det store bogstav, der startede linjen, er væk, fordi et mønster ingen idé har om, hvad et ord laver i en sætning. Er det store bogstav vigtigt, er det en anden regel.

Et match, der krydser kanten af et kursivt afsnit

Input

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

Resultat

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

Matchet begynder inde i kursiven og slutter uden for den, så halvdelen af det, markeringen dækkede, er væk, og der er ikke noget korrekt sted tilbage til den. Den droppes og tælles frem for at blive efterladt viklet rundt om de forkerte bogstaver.

Ofte stillede spørgsmål

Hvordan beholder jeg en del af det, mønstret matchede, i min ERSTATNING?

Sæt parentes om den del i mønstret, og henvis til den som `$1` i erstatningen — `$2` for den anden gruppe og så videre. Mønstret `\s+([.,!?])` med erstatningen `$1` fjerner mellemrummet og beholder tegnsætningen, hvilket netop er den opgave, en fast tekst ikke kan løse. `$&` står for hele matchet, og `$$` for et dollartegn, du faktisk vil have i teksten.

Hvilke flag kører mit mønster med på denne side?

`g` og `u` er slået til som standard. `g` finder alle match i stedet for at stoppe ved det første, og `u` får mønstret til at læse teksten ét tegn ad gangen, hvilket er det, der gør `\p{L}`, `\p{N}` og slægtninge til noget meningsfuldt. Tilføj `i` for at ignorere store og små bogstaver, `m` for at lade ankrene virke linje for linje, `s` for at lade en prik matche et linjeskift. Et tomt felt kører uden flag. Ethvert andet bogstav — `x`, `y`, `d` — afviser kørslen frem for at blive ignoreret.

Er regex-erstatning det samme som siden med søg og erstat?

Nej, og forskellen er, hvad du skriver i feltet. Den side matcher tegn præcis som skrevet, så det eneste, der kan gå galt, er at finde intet. Denne side kører et program, som kan matche tusindvis af steder i ét gennemløb og skrive dem alle om. Derfor starter mønstret tomt her, derfor afvises ukendte flag, og derfor er siderne to: på den ene er en omskrivning, der ikke skete, en tastefejl; på den anden kan den være et mønster, der stille betød noget andet.

Hvad sker der, når to match overlapper hinanden?

Det venstre vinder, og scanningen fortsætter efter det, som enhver regulært-udtryk-motor gør. Så `aa` mod `aaaa` finder to match og ikke tre, og efter erstatningen er teksten `bb`. Havde du forventet tre, beskriver mønstret noget, motoren ikke kan gøre, og det er bedre at vide, før filen kommer tilbage.

Beskytter siden mig mod et mønster, der er langsomt?

Den afviser én familie, før noget kører: en gentagelse anvendt på en gruppe, der allerede gentager sig uden grænse, som `(a+)+` eller `(\d+)+`. Det er de mønstre, der låser en browserfane, og tredive tegns input er nok. Tre former fanges ikke og bør undgås med hånden — to overlappende alternativer inde i en gentagen gruppe som `(a|a)+`, flere overlappende gentagelser side om side som `a*a*a*b` og enorme tal som `(a{100}){100}`. Intet måles mod et ur, fordi en tidsgrænse ville gøre, at samme fil kom ud forskelligt på en hurtig og en langsom maskine.

Hvad sker der med kursiv og anden formatering, når teksten skrives om?

En tag uden for redigeringen flytter sig sammen med teksten, og en tag, der omslutter redigeringen, strækkes eller trækkes sammen for at passe. Når et match krydser kanten af en tag, er der ikke noget korrekt sted tilbage til markeringen, så den droppes, og tabsrapporten siger, hvor mange der blev droppet. Karaoketiming droppes, så snart et match rører den, fordi opdelingen pr. stavelse ikke længere passer til ordene.

Kan jeg bruge et regex på alle tolv undertekstformater?

Ja. Mønstret anvendes på teksten i hver tekstblok, og alle tolv formater læser den tekst ud, så en SRT-fil, en WebVTT-fil, en ASS-fil med stilarter, et LRC-lyricsheet og en ren transskription fungerer ens. Hver fil skrives tilbage i det format, den kom i, og en MicroDVD-fils billednumre bruger den billedhastighed, der står i panelet.

Relaterede værktøjer