1

Я боролся с преобразованием файла в следующем формате

0:01:00.340 --> 0:01:01.380
***subtitle text***

0:01:01.380 --> 0:01:02.390
***subtitle text***

в стандартный формат .srt, то есть:

1
0:01:00,320 --> 0:01:01,360
***subtitle text***

2    
0:01:01,360 --> 0:01:02,320
***subtitle text***

Ура заранее!

РЕДАКТИРОВАТЬ: удалил материал о моем прогрессе до ответа LotPing.

2 ответа2

2

Мой любимый редактор Textpad может сделать это, в противном случае вам понадобится VBScript или Powershell.

Редактировать RegEx стал более сложным с 3 группами, ловящими области вокруг точек / запятых

Поиск: ^(\d{1,2}:\d{2}:\d{2})\.(\d{3}[-> ]+\d{1,2}:\d{2}:\d{2})\.(\d{3})
Заменить: \i\n$1,$2,$3

Что делает RegEx:

  • найдите шаблон h:mm:ss , где \d представляет собой цифру, а {1,2} - это квантификатор, означающий один-два вхождения. {2} только два раза и т.д.
  • [-> ]+ является классом любого из символов в [ ] следующий квантификатор + означает, по крайней мере, один, но как можно больше из символов класса.
  • ^ якоре в начале строки и
  • (группы) это
  • сопровождается буквальной точкой

Это заменено

  • инкремент \i специально для TextPad
  • а \n новая строка
  • и сгруппированный шаблон $1 ака время
  • и буквальная запятая.

Ценным источником для RegEx является Regular-Expressions.info
и для интерактивного тестирования RegEx или RE используйте RegEx101.com


Выше RE в RegEx101.com без \i -feature

0

Для решения командной строки я бы использовал JREPL.BAT - утилиту регулярных выражений в виде чистого сценария (JScript/batch), которая работает на любом компьютере с Windows начиная с XP без необходимости использования какого-либо стороннего exe-файла.

Далее используется продолжение строки ^ чтобы избежать прокрутки, но все это можно поместить в одну строку.

jrepl "^(\d+:\d\d:\d\d)\.(\d{3} --> \d+:\d\d:\d\d)\.(\d{3})"^
      "$txt=++n+'\r\n'+$1+','+$2+','+$3" /jq /jbeg "var n=0" /f test.txt /o -

Используйте CALL JREPL, если вы помещаете команду в пакетный скрипт.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .