每 x 行增加数字并批量修改 .srt 文件的时间戳

每 x 行增加数字并批量修改 .srt 文件的时间戳

我一直在努力转换以下格式的文件

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 回答之前有关我的进展的内容。

答案1

我最喜欢的编辑器文本板可以做到这一点,否则您将需要一个 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}
  • [-> ]+[ ]是下列量词内的任意一个字符的类,+表示至少一个但尽可能多的字符类。
  • ^锚定在行首,
  • (团体)这个
  • 后面跟着一个点

取而代之的是

  • \iTextPad 特有的增量
  • 换行符\n
  • 以及分组$1模式,也就是时间
  • 以及一个文字逗号。

RegEx 的一个有价值的来源是正则表达式.info
并以交互方式测试 RegEx 或 RE 使用RegEx101.com


上述 RE 在RegEx101.com不带\i-feature

答案2

对于命令行解决方案,我会使用执行文件- 纯脚本(JScript/batch)正则表达式实用程序,可在 XP 及更高版本的任何 Windows 机器上运行,无需任何第三方 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。

相关内容