Перейти до основного вмісту
SubtitleMatrix

Замінити за регулярним виразом

Текст і оформленняЗаміна за регулярним виразом
Або вставте текст субтитрів

Параметри

Регулярний вираз, що зіставляється з текстом кожної репліки. Кожен збіг замінюється. Дві сторінки цього розділу ділять поле: одна відкриває його порожнім для шаблону, який у вас уже є, інша починає з шаблону, який можна редагувати в будь-який бік.

Чим стає кожен збіг. Залиште порожнім, щоб видалити кожен збіг. На відміну від сторінки буквальної заміни, знак долара тут особливий: $1 — перша група в дужках, $& — весь збіг, $$ — буквальний знак долара.

Літери, з якими компілюється шаблон. g і u увімкнені за замовчуванням: u змушує шаблон читати текст по символу, а не по кодовій одиниці, і саме це робить \p{L} та подібні до них тим, чим вони названі. Додайте i, щоб ігнорувати регістр, m — для якорів рядків, s — щоб крапка збігалася з переносом рядка. Очистьте поле, щоб компілювати без жодних прапорців. Будь-яка інша літера відхиляється, а не ігнорується, бо шаблон, запущений із прапорцями, яких ви не просили, — це шаблон, що тихо означає щось інше.

У якій частоті кадрів пораховано таймінги. На сторінках форматів це те, що потрібно MicroDVD, бо він зберігає час як номери кадрів. На сторінках частоти кадрів це частота, за якою файл синхронізували — версія, для якої робили субтитри, — а друге поле сторінки приймає частоту відео, з яким ви будете їх використовувати. 23,976, 24, 25, 29,97, 30, 50, 59,94 і 60 — найпоширеніші. Помилка зміщує весь таймлайн, а на сторінках частоти кадрів — на відношення, а не на фіксовану величину.

Заповніть Шаблон, щоб запустити.

Ця сторінка переписує текст усередині реплік шаблоном, який ви пишете. Шаблон — не фіксований рядок: escape-послідовність для цифр означає будь-який їхній ряд, дужки з альтернативою — будь-яке з двох слів, а крапка замінює будь-який символ узагалі. Кожен збіг у кожній репліці замінюється за один прохід, і сторінка повідомляє, скільки місць змінено. Рухається лише текст — кожен початок і кінець переноситься точно як був.

Поле заміни теж не фіксований рядок. Знак долара в ньому особливий: $1 означає те, що захопила перша дужкова група збігу, $& — увесь збіг, а $$ — буквальний знак долара. Саме це дозволяє одному правилу причепурити тисячі різних рядків — прибрати зайву пробілку перед крапкою, зберігши пунктуацію, бо пунктуацію захопила група.

Шаблони виконуються з увімкненими g і u. g означає знайти кожен збіг, а не лише перший; u змушує шаблон читати текст по символу, а не по кодовій одиниці, і саме завдяки цьому клас літер означає літеру. Додайте i, щоб ігнорувати регістр, m, щоб якорі працювали порядково, s, щоб крапка збігалася з переносом рядка. Очистіть поле прапорців, щоб запустити без жодного. Будь-яка інша літера відхиляє весь прогін, а не ігнорується, бо шаблон, виконаний під прапорцями, яких ви не просили, — це шаблон, що тихо означає щось інше.

Вбудоване оформлення переноситься завжди, коли для нього є чесне місце: тег зсувається, коли правка відбувається поза ним, і розтягується, коли правка відбувається всередині. Коли збіг перетинає край тега, розмітка відкидається й зараховується у звіті про втрати, бо альтернатива — курсив навколо не тих слів. Нічого не завантажується, кожен файл записується назад у власному форматі, а цілий сезон може пройти чергу одразу.

Приклади

Зберегти пунктуацію групою захоплення

Вхід

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

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

Результат

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

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

Шаблон — це ряд пробілів, за яким іде один із чотирьох знаків, і дужка робить цю пунктуацію першою групою, тому $1 повертає її на місце. Три збіги, три зміни. Буквальний пошук цього не виражає взагалі: він уміє лише перетворити один фіксований рядок на інший фіксований рядок.

Один шаблон, обидва написання

Вхід

The Colour of the sky.
colourless and calm.

Результат

The color of the sky.
colorless and calm.

З прапорцем i у полі прапорців colour ловить і написання з великої літери. Зауважте, чого прапорець не робить: велика літера, що починала рядок, зникає, бо шаблон не має уявлення, що слово робить у реченні. Якщо велика літера важлива, це друге правило.

Збіг, що перетинає край курсиву

Вхід

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

Результат

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

Збіг починається всередині курсиву й закінчується поза ним, тому половина того, що накривала розмітка, зникла, і правильного місця для неї не лишилося. Її відкидають і рахують, а не лишають накрученою навколо не тих літер. Курсив у решті репліки лишається недоторканим, бо збіг зачепив лише його край.

Часті запитання

Як зберегти частину того, що збіглося з шаблоном?

Поставте дужки навколо цієї частини в шаблоні й посилайтеся на неї як $1 у заміні, $2 — для другої групи й так далі. Шаблон із пробілів із подальшою групою пунктуації та заміною $1 прибирає пробіл і зберігає знак, і саме цього фіксований рядок зробити не може. $& означає весь збіг, а $$ — знак долара, який ви справді хочете в тексті.

З якими прапорцями виконується шаблон?

g і u увімкнені типово. g знаходить кожен збіг, а не спиняється на першому, а u змушує шаблон читати текст по символу, і саме завдяки цьому класи літер і цифр означають те, що кажуть. Додайте i для зіставлення без урахування регістру, m, щоб якорі працювали порядково, s, щоб крапка збігалася з переносом рядка. Очищене поле виконує без жодного прапорця. Будь-яка інша літера відхиляє прогін, а не ігнорується.

Це те саме, що сторінка пошуку й заміни?

Ні, і різниця в тому, що ви пишете в полі. Та сторінка зіставляє символи точно як написані, тому єдине, що може піти не так, — нічого не знайти. Ця виконує програму, яка може зіставити тисячі місць за один прохід і переписати їх усі. Ось чому шаблон тут починається порожнім, чому невідомі прапорці відхиляються й чому сторінки розділені: на одній невдала заміна — це одруківка, на іншій це може бути шаблон, що тихо означав щось інше.

Що стається, коли два збіги перекриваються?

Перемагає найлівіший, і сканування продовжується після нього, як робить кожен рушій регулярних виразів. Тому aa на aaaa знаходить два збіги, а не три, і після заміни текст стає bb. Якщо ви чекали трьох, шаблон описує те, чого рушій зробити не може, і це краще знати до того, як файл повернеться. Перекриттів тут не буде: після заміни сканування починається за кінцем попереднього збігу.

Чи захистить сторінка від шаблону, який працює надто довго?

Від однієї родини вона відмовляє ще до запуску: повторення, застосоване до групи, яка вже повторюється без межі, як-от вкладений плюс у плюсі або повтор дужок із цифрами. Саме такі шаблони замикають вкладку браузера, і тридцяти символів входу для цього досить. Три форми не ловляться й варті того, щоб їх уникати руками: дві альтернативи, що перекриваються, всередині повторюваної групи; кілька перекриваних повторів поруч; і величезні числа повторень. Перевірки за годинником немає, бо обмеження в часі дало б різний результат на швидкій і повільній машині.

Що відбувається з курсивом та іншим оформленням, коли текст переписано?

Тег поза правкою зсувається разом із текстом, а тег, що містить правку, розтягується або стискається відповідно. Коли збіг перетинає край тега, правильного місця для розмітки не лишається, тому вона відкидається, а звіт про втрати каже, скільки відкинуто. Караоке-таймінг відкидається щоразу, коли збіг його торкається, бо поділ на склади більше не збігається зі словами.

Чи можна використовувати це на будь-якому форматі субтитрів?

Так. Шаблон застосовується до тексту кожної репліки, а всі дванадцять форматів цей текст вичитують, тому SRT, файл WebVTT, файл ASS зі стилями, аркуш LRC і звичайний транскрипт працюють однаково. Кожен файл записується назад у тому форматі, у якому прийшов, а номери кадрів MicroDVD використовують частоту кадрів із панелі. Порожній шаблон нічого не зіставляє, і сторінка каже про це замість переписувати файл.

Споріднені інструменти