VS Code: как проверить массовую замену таймкодов в расшифровке
Проверяемая замена в Visual Studio Code: рабочие копии, ограничение файлов, регулярное выражение для начала строки, предварительный diff и контроль результата.
Отделите изменение оформления от исправления содержания
В текстовой расшифровке таймкод может стоять в начале строки без скобок, а принятый формат проекта требует скобок. Когда таких строк много, ручная правка занимает время. Visual Studio Code позволяет искать и заменять текст, включая регулярные выражения, но правило нужно ограничить так, чтобы оно не затронуло сами реплики.
Сначала сохраните исходную расшифровку аудио. Сделайте отдельную папку рабочих TXT-копий. Не открывайте для пробной глобальной замены общий каталог, в котором лежат оригиналы, результаты анализа и файлы субтитров. Одного фильтра имени недостаточно, если несколько разных типов данных имеют расширение .txt.
Выберите одну операцию. В этой инструкции меняется запись времени «00:02:15 » на «[00:02:15] » в начале строки. Числовое время остаётся тем же. Не совмещайте этот проход с удалением повторов, заменой имён, исправлением терминов или пересчётом таймкодов после монтажа.
Подготовьте контрольные строки: нужный префикс, время внутри реплики, уже оформленный таймкод и строку без времени. Хорошее правило должно сработать там, где задумано, и оставить остальные случаи без изменения. Совпадение текста с шаблоном не подтверждает, что время правильно связано с аудио.
Ограничьте поиск и проверьте выражение
Откройте папку рабочих копий в VS Code и перейдите в Search. Для поиска по открытой папке в Windows и Linux используется Ctrl+Shift+F. В дополнительных полях можно задать Files to include и Files to exclude; для данного прохода оставьте только заранее выбранные текстовые копии.
Включите Use Regular Expression — кнопку .* — и вставьте учебный шаблон: ^([0-9]{2}:[0-5][0-9]:[0-5][0-9])[ \t]+. Он рассчитан на время HH:MM:SS из двух цифр часа и значений минут и секунд 00–59, стоящее в начале строки, после которого есть пробел или табуляция.
Знак ^ ограничивает совпадение началом строки. Скобки сохраняют время как первую группу. Последний фрагмент находит горизонтальный промежуток после времени. Он не предназначен для перехода через новую строку. Не заменяйте его на \s+ без отдельного разбора: такой класс способен затронуть и переносы.
Посмотрите найденные строки до ввода замены. Время внутри фразы «В 00:02:15 обсуждали план» не должно попадать в этот шаблон. Строка с уже поставленными скобками тоже не подходит. Если результаты не соответствуют ожиданиям, остановитесь на пробе и выясните реальный формат исходника.
Шаблон не подходит для MM:SS, времени с миллисекундами, SRT или VTT. Он не добавляет ведущий час к короткой метке и не преобразует разделители. Для другого формата нужен отдельный проверенный проход, а не расширение выражения до совпадения со всем похожим текстом.
Посмотрите предварительные изменения и начните с одной замены
Раскройте поле Replace и введите [$1] — после закрывающей скобки стоит один пробел. В VS Code $1 означает содержимое первой захваченной группы. Поэтому сохраняются цифры исходного времени, а меняется только его оболочка и промежуток перед следующим текстом.
По официальной документации при поиске и замене по файлам VS Code показывает diff ожидаемых изменений. Просмотрите его для нескольких разных строк. Убедитесь, что подпись говорящего и вся реплика остаются рядом с тем же временем, а строки не соединяются между собой.
Примените одну замену и снова откройте фрагмент. Затем обработайте один небольшой файл. Проверьте начало, середину и конец, особенно строку с длинной репликой. Только после удачной пробы переходите к выбранному набору файлов.
Не оценивайте правильность только по числу совпадений. Одинаковое число может включать неверные строки; малое число может объясняться тем, что часть времени уже оформлена или записана в другом формате. Запишите, какие файлы включены и какие варианты намеренно оставлены для отдельного прохода.
Не используйте этот способ для смысловой замены терминов по всей расшифровке без чтения контекста. Правило оформления времени проверяется на структуре строки, а решение о правильном слове требует записи и содержания реплики. Это разные основания для изменения текста.
Сравните сохранённый результат с исходником
Сохраните рабочий файл и откройте сравнение двух копий. В проводнике VS Code можно выбрать исходный файл через Select for Compare, затем для изменённого — Compare with Selected. В различиях должны быть только предусмотренные скобки и нормализованный промежуток после таймкода.
Проверьте строки, которые не должны были измениться: время внутри фразы, готовые скобки, обычный текст без префикса. Сравните последнюю реплику и количество строк. Для этого конкретного шаблона переносы не меняются; исчезновение или соединение строк требует выяснения причины.
Повторите поиск исходного шаблона по обработанному файлу. Отсутствие совпадений показывает, что подходящие префиксы больше не остались; оно не доказывает правильность всех таймкодов. Посмотрите также, не остались ли необработанные варианты другого формата, и обозначьте их отдельно.
Если diff показывает удалённое слово, изменение говорящего или большой переставленный блок, не принимайте результат только потому, что скобки появились. Вернитесь к контрольной копии, уточните область и правило. Для оценки смысловых изменений используйте порядок сравнения версий расшифровки.
Сохраните в журнале правок исходную версию, шаблон, строку замены, область файлов и результат проверки. Итоговая копия должна отличаться от оригинала понятным именем и воспроизводимым изменением.
Учебный пример: что изменится, а что останется прежним
Все строки вымышлены. Шаблон проверен отдельно на совпадениях и несовпадениях; это пример форматирования TXT, а не исправления времени записи.
| Исходная строка | После замены | Почему |
|---|---|---|
| 00:02:15 У01: Срок пока не известен. | [00:02:15] У01: Срок пока не известен. | Время стоит в начале; слова и отрицание сохранены. |
| В 00:02:15 обсуждали план. | Без изменения | Время находится внутри предложения. |
| [00:02:15] У01: Уже оформлено. | Без изменения | Префикс со скобкой не совпадает с шаблоном. |
| 02:15 У01: Короткая метка. | Без изменения | Формат MM:SS требует другого правила. |
| У02: Проверим завтра. | Без изменения | Нет временного префикса. |
Если результат выглядит как «[00:02:15] У01: Срок известен», потеряно отрицание. Учебная замена не должна давать такой результат: проверьте другой проход, ручную правку или ошибочно выбранную версию файла.
Паспорт одной массовой замены
Операция: скобки вокруг HH:MM:SS в начале строки
Исходная версия:
Папка рабочих копий:
Включённые и исключённые файлы:
Use Regular Expression: включено
Find: ^([0-9]{2}:[0-5][0-9]:[0-5][0-9])[ \t]+
Replace: [$1]
После ] — один пробел
Проба на одном совпадении:
Проба на одном файле:
Время внутри фразы не изменено:
Готовые скобки не изменены:
Слова и говорящие сохранены:
Количество строк и конец проверены:
Diff содержит только ожидаемую правку:
Необработанные другие форматы:
Итоговая версия и дата:Частые вопросы
Это выражение пересчитывает время после монтажа?
Нет. Оно сохраняет исходные цифры и меняет оформление. Связь меток с изменённой записью проверяется отдельным способом.
Можно ли применить его к SRT?
В инструкции рассматривается TXT с временем в начале строки. SRT имеет другую структуру, включая интервалы и миллисекунды; не применяйте этот проход к нему автоматически.
Почему часть времени не найдена?
Проверьте область файлов и формат меток. MM:SS, готовые скобки и миллисекунды намеренно не соответствуют данному выражению.
Нужно ли сразу заменять во всех файлах?
Сначала проверьте одно совпадение и один файл, затем просмотрите ожидаемые изменения выбранного набора. Сохраняйте исходные копии отдельно.
Отсутствие совпадений доказывает правильность результата?
Оно показывает отсутствие подходящего шаблона в выбранной области. Полноту текста и ожидаемый характер изменений подтверждают отдельное сравнение и просмотр.