去除字幕内时间码
或者粘贴字幕文本
选项
一条正则表达式,对每条字幕的文本进行匹配。所有匹配都会被替换。这一节的两个页面共用这个框:一个默认留空,供你填入已有的表达式;另一个预填一条可随意修改的表达式。
每个匹配被替换成的内容。留空则删除所有匹配。与字面查找替换页不同,这里的美元符号有特殊含义:$1 表示匹配中的第一个括号分组,$& 表示整个匹配,$$ 表示一个字面的美元符号。
编译表达式时使用的字母。默认开启 g 和 u:u 让表达式按字符而不是按码元读取文本,\p{L} 这类写法才名副其实。加 i 忽略大小写,加 m 让 ^ 和 $ 匹配每行首尾,加 s 让点号也能匹配换行。清空这个框则以无标志编译。任何其他字母都会被拒绝而不是忽略,因为在你不曾要求的标志下运行,表达式会悄悄地变成另一个意思。
时间按哪个帧率计算。在格式页面里,这是 MicroDVD 需要的值,因为它把时间存成帧号。在帧率页面里,它是文件当初对应的速率 —— 字幕是按这个版本做的 —— 而页面的第二个框填你要拿它配套的视频速率。常见的有 23.976、24、25、29.97、30、50、59.94 和 60。填错会让整条时间轴偏移;在帧率页面里,偏移是按比例发生的,而不是一个固定的量。
这一页删掉印在 cue 文字里的时间戳——转录稿、自动字幕导出、粗剪文稿常常在每行开头带的 `[00:00:01]`。这些戳是文字的一部分,不是字幕的一部分:它们出现在屏幕上,读者看得见,页面把它们连同方括号和后面那个空格一起拿掉。播放器用的 cue 时间码一点不动。
它刻意不是“删除方括号里的一切”的那一页。音效标注留着——`[door slams]`、`[phone rings]`、`(music)` 是听障轨必须承载的信息,而满篇时间戳的转录稿恰恰也常有这些。看起来像时间的数字也留着:`10:30` 是钟点、没有秒,`12:34:56:07` 是四段的帧时间码而不是时钟。只有“时:分:秒”三段的时间戳会被删。
决定这一切的是框里的模式,你可以改。模式两端都会检查候选旁边的字符:前后只要挨着数字或冒号,说明这是一段更长内容的一部分,整段都不归它管。这个检查不是装饰:没有它,引擎会从 `12:34:56:07` 中间开始,把行变成 `SMPTE 12:` 加上后面剩下的东西,还报告删了一处。如果你的文件是别的形状——没有小时的 `MM:SS`,或者花括号里的时间戳——改模式,而不是绕过它。
文件不上传,每份按自己的格式写回,一整个文件夹的转录稿可以排队处理。整条 cue 只有时间戳时,cue 留下、文字为空:时间轴上的空洞与一行不该存在的文字是两个问题,后者归质检工具管。
示例
一份每行都带时间点的转录稿
输入
[00:00:01] We should go.
[00:00:05] The train leaves at 10:30.
输出
We should go.
The train leaves at 10:30.
两个时间戳都删掉了,连同方括号和后面的空格。第二行值得看:10:30 是两段、没有秒的钟点,原样保留。这个区分正是这一页用模式而不是“删方括号内容”的原因。
真实字幕文件里的时间戳
输入
1
00:00:01,000 --> 00:00:04,000
[00:00:12] (phone rings)
2
00:00:05,000 --> 00:00:08,000
(00:01:02.500) So I said yes.
输出
1
00:00:01,000 --> 00:00:04,000
(phone rings)
2
00:00:05,000 --> 00:00:08,000
So I said yes.
方括号、圆括号与毫秒——同一条规则。音效标注与句子都从最左边开始了,每块顶部的时间码没动,因为那是文件的时间轴而不是文字。
常见问题
为什么 10:30 没有被删掉?
因为它只有两段、没有秒,而模式要求依次是时、分、秒。这里删的时间戳是录像中的位置;10:30 是人物说出口的钟点,删掉它就改变了台词内容。文件里确实带两段式时间戳时,把模式里的“时”去掉,并保留两端的守卫。
12:34:56:07 这种帧时间码会被删掉一半吗?
不会,模式就是围绕这种情况写的。两端都检查相邻字符:候选前后只要挨着数字或冒号,就认为它属于更长的东西而放过。没有这个检查,引擎会从第三个字符开始删掉 `34:56:07`,行变成 `SMPTE 12:`——一条看着挺像、其实丢了信息的行。
文件里的音效标注为什么活下来了?
因为它们不是时间戳。删除 `[00:01:23]` 的模式没有理由碰 `[door slams]`,这是有意的:非语音信息正是听障轨的用途,而带时间戳的文件往往也带着它们。要把方括号内容整类删掉,用专门那一页。
时间戳正则可以自己改吗?
可以,那是一个完整的正则框,通用正则那一页能写的这里都能写。值得保留的有两处:与时间戳配套的括号与后面的空格,以及两端的守卫——没有守卫,更长的数字会被切一半。时间戳是没有小时的 `MM:SS` 时,删掉“时”那个分组。
一条 cue 只有时间戳,删完会怎样?
时间戳删掉,cue 的文字变成空,那几秒屏幕上什么也不显示。cue 本身不删:时间轴上的空洞与“一行不该印出来的文字”是两个问题,而删文字是这一页的全部工作。空 cue 事后可以用质检工具找出来。
LRC 文件行首的时间码会被删吗?
不会。LRC 行首的 `[mm:ss.xx]` 是文件自己的计时,而这一页只改一行的文字、从不改它的计时。SRT 的 cue 编号与时间码、WebVTT 的 cue 设置同理——只有印在文字内部的时间戳才会被移除。