Przejdź do treści
SubtitleMatrix

Wyrażenia regularne w napisach

Tekst i stylZamiana wyrażeniem regularnym
Albo wklej tekst napisów

Opcje

Wyrażenie regularne dopasowywane do tekstu każdego bloku. Każde dopasowanie jest zamieniane. Dwie strony w tej sekcji dzielą to pole: jedna otwiera je puste dla wzorca, który już masz, druga zaczyna z wzorcem, który możesz dowolnie edytować.

Czym staje się każde dopasowanie. Zostaw puste, aby usunąć każde dopasowanie. W przeciwieństwie do strony z dosłownym wyszukiwaniem i zamianą znak dolara jest tutaj specjalny: $1 oznacza pierwszą grupę w nawiasach z dopasowania, $& całe dopasowanie, a $$ dosłowny znak dolara.

Litery, z którymi wzorzec jest kompilowany. g i u są domyślnie włączone: u sprawia, że wzorzec czyta tekst znak po znaku, a nie jednostka kodu po jednostce, co sprawia, że \p{L} i podobne znaczą to, co mówią. Dodaj i, aby ignorować wielkość liter, m dla kotwic wierszy, s, aby kropka pasowała do podziału wiersza. Wyczyść pole, aby kompilować bez żadnych flag. Każda inna litera jest odrzucana, a nie ignorowana, bo wzorzec uruchomiony z flagami, o które nie prosiłeś, to wzorzec, który po cichu znaczy coś innego.

W jakiej liczbie klatek na sekundę liczone są czasy. Na stronach formatów tego wymaga MicroDVD, bo zapisuje czasy jako numery klatek. Na stronach poświęconych liczbie klatek jest to stawka, według której zgrany był plik — wersja, dla której powstały napisy — a drugie pole na stronie przyjmuje liczbę klatek wideo, z którym napisy będą używane. Najczęstsze wartości to 23,976, 24, 25, 29,97, 30, 50, 59,94 i 60. Pomyłka przesuwa całą oś czasu, a na stronach poświęconych liczbie klatek przesuwa ją o współczynnik, a nie o stałą wartość.

Uzupełnij pole Wzorzec, aby uruchomić.

Ta strona przepisuje tekst wewnątrz bloków napisów wzorcem, który napiszesz. Wzorzec nie jest stałym ciągiem: \d+ znaczy dowolny ciąg cyfr, (cat|dog) znaczy jedno z tych słów, a kropka oznacza dowolny znak. Każde dopasowanie, w każdym bloku, jest zamieniane w jednym przebiegu, a strona raportuje, ile miejsc się zmieniło. Zmienia się tylko tekst – każdy czas początku i końca jest przenoszony dokładnie tak, jak był.

Pole zamiennika też nie jest stałym ciągiem. Znak dolara jest w nim specjalny: $1 oznacza to, co przechwyciła pierwsza grupa w nawiasach, $& całe dopasowanie, a $$ dosłowny znak dolara. To pozwala jednej regule uporządkować tysiące różnych wierszy – na przykład usunąć zabłąkaną spację przed kropką, zachowując interpunkcję, bo to ona jest tym, co przechwyciła grupa.

Wzorce działają z włączonymi g i u. g znaczy znajdź każde dopasowanie, a nie tylko pierwsze; u sprawia, że wzorzec czyta tekst znak po znaku, a nie jednostkę kodu po jednostce, i dzięki temu \p{L} znaczy literę. Dodaj i, żeby ignorować wielkość liter, m, żeby kotwice działały wiersz po wierszu, s, żeby kropka pasowała do końca wiersza. Wyczyść pole flag, żeby działać bez żadnej. Każda inna litera odrzuca całe uruchomienie, zamiast być zignorowana, bo wzorzec uruchomiony z flagami, o które nie prosiłeś, jest wzorcem, który po cichu znaczy coś innego.

Stylowanie w linii jest przenoszone, ilekroć jest dla niego uczciwe miejsce: znacznik przesuwa się, gdy edycja dzieje się poza nim, i rozciąga, gdy edycja dzieje się w nim. Gdy dopasowanie przecina krawędź znacznika, znaczniki są usuwane i liczone w raporcie strat, bo alternatywą jest kursywa owinięta wokół niewłaściwych słów. Nic nie jest wysyłane, każdy plik jest zapisywany we własnym formacie, a cały sezon może przejść przez kolejkę naraz.

Przykłady

Zachowanie interpunkcji z grupą przechwytującą

Wejście

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

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

Wynik

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

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

Wzorzec to ciąg spacji, po którym następuje jeden ze znaków . , ! ? – nawias czyni tę interpunkcję pierwszą grupą, więc $1 wstawia ją z powrotem. Trzy dopasowania, trzy zmiany. Dosłowne szukanie w ogóle tego nie wyrazi: potrafi tylko zamienić jeden stały ciąg na inny stały ciąg.

Jeden wzorzec, obie pisownie

Wejście

The Colour of the sky.
colourless and calm.

Wynik

The color of the sky.
colorless and calm.

Z literą i w polu flag colour łapie też pisownię wielką literą. Zauważ, czego flaga nie robi: wielka litera na początku wiersza znika, bo wzorzec nie ma pojęcia, co słowo robi w zdaniu. Jeśli wielkość liter ma znaczenie, to druga reguła.

Dopasowanie, które przecina krawędź kursywy

Wejście

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

Wynik

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

Dopasowanie zaczyna się w kursywie i kończy poza nią, więc połowa tego, co obejmowały znaczniki, zniknęła i nie ma dla nich właściwego miejsca. Są usuwane i liczone, zamiast zostawać owinięte wokół niewłaściwych liter.

Częste pytania

Jak zachować część tego, co dopasował wzorzec?

Umieść tę część w nawiasach we wzorcu i odwołaj się do niej jako $1 w zamienniku – $2 dla drugiej grupy i tak dalej. Wzorzec \s+([.,!?]) z zamiennikiem $1 usuwa spację i zachowuje interpunkcję, co jest dokładnie tym zadaniem, którego stały ciąg nie potrafi. $& oznacza całe dopasowanie, a $$ znak dolara, który naprawdę chcesz w tekście.

Z jakimi flagami działa wzorzec?

g i u są domyślnie włączone. g znajduje każde dopasowanie, zamiast zatrzymywać się na pierwszym, a u sprawia, że wzorzec czyta tekst znak po znaku, dzięki czemu \p{L}, \p{N} i im podobne znaczą to, co mówią. Dodaj i, żeby ignorować wielkość liter, m, żeby kotwice działały wiersz po wierszu, s, żeby kropka pasowała do końca wiersza. Wyczyszczenie pola uruchamia wzorzec bez żadnych flag. Każda inna litera – x, y, d – odrzuca uruchomienie, zamiast być zignorowana.

Czy to jest to samo co strona znajdź i zamień?

Nie, a różnicą jest to, co wpisujesz w polu. Tamta strona dopasowuje znaki dokładnie tak, jak je napisano, więc jedyne, co może pójść źle, to brak dopasowania. Ta strona uruchamia program, który potrafi dopasować tysiące miejsc w jednym przebiegu i przepisać je wszystkie. Dlatego wzorzec zaczyna się tu pusty, dlatego nieznane flagi są odrzucane i dlatego to dwie osobne strony: na jednej przepisanie, które się nie stało, jest literówką, na drugiej może być wzorcem, który po cichu znaczył coś innego.

Co się dzieje, gdy dwa dopasowania się nakładają?

Wygrywa to najbardziej z lewej, a skanowanie idzie dalej za nim, jak w każdym silniku wyrażeń regularnych. Więc aa na aaaa znajduje dwa dopasowania, a nie trzy, i po zamianie tekst to bb. Jeśli oczekiwałeś trzech, wzorzec opisuje coś, czego silnik nie potrafi, i lepiej wiedzieć o tym, zanim plik wróci.

Czy strona ochroni mnie przed wzorcem, który jest wolny?

Odrzuca jedną ich rodzinę, zanim cokolwiek się uruchomi: powtórzenie zastosowane do grupy, która już powtarza się bez ograniczenia, jak (a+)+ albo (\d+)+. To wzorce, które zakładają kartę przeglądarki, a trzydzieści znaków wejścia wystarcza. Trzy kształty nie są łapane i warto ich unikać ręcznie – dwie nakładające się alternatywy w powtarzanej grupie, jak (a|a)+; kilka nakładających się powtórzeń obok siebie, jak a*a*a*b; i ogromne liczniki, jak (a{100}){100}. Nic nie jest sprawdzane zegarem, bo limit czasu sprawiłby, że ten sam plik wychodziłby inaczej na szybkiej i na wolnej maszynie.

Co dzieje się z kursywą i innym stylowaniem, gdy tekst jest przepisywany?

Znacznik poza edycją przesuwa się razem z tekstem, a znacznik obejmujący edycję rozciąga się albo kurczy, żeby do niej pasować. Gdy dopasowanie przecina krawędź znacznika, nie zostaje właściwe miejsce dla znaczników, więc są usuwane, a raport strat mówi, ile ich usunięto. Timing karaoke jest usuwany, ilekroć dopasowanie go dotknie, bo podział na sylaby przestaje się zgadzać ze słowami.

Czy mogę tego użyć na dowolnym formacie napisów?

Tak. Wzorzec jest stosowany do tekstu każdego bloku, a wszystkie dwanaście formatów odczytuje ten tekst, więc plik SRT, WebVTT, ASS ze stylami, arkusz tekstu piosenki LRC albo zwykły transkrypt działają tak samo. Każdy plik jest zapisywany w formacie, w którym przyszedł, a numery klatek pliku MicroDVD używają liczby klatek na sekundę z panelu.

Powiązane narzędzia