我一直在努力转换以下格式的文件
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}
[-> ]+
[ ]
是下列量词内的任意一个字符的类,+
表示至少一个但尽可能多的字符类。^
锚定在行首,- (团体)这个
- 后面跟着一个点
取而代之的是
\i
TextPad 特有的增量- 换行符
\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。