使用正则表达式对字幕文件进行微小更改

时间:2014-07-12 09:05:55

标签: regex

我正在为两个半男人下载字幕。然后我有两集两个字幕。其中一个使用VLC媒体播放器,一个不工作。要查看错误,我使用Gedit打开了两个文件,看到了一个小的差异,这可能就是原因。

工作子

1
00:00:02,412 --> 00:00:04,363
- So, dear...
- What?

2
00:00:04,574 --> 00:00:06,359
Do you see anything you like?

3
00:00:06,653 --> 00:00:08,887
I don't know. What's venison?

非工作子

1
00:00:02:640 --> 00:00:05:160
Well, this is gonna be
a sucky weekend.

2
00:00:05:440 --> 00:00:09:720
Try spending it with an 11 -year-old
who does nothing but complain.

3
00:00:10:280 --> 00:00:12:080
You mean me?

差:

正如您所看到的,唯一的区别是时间戳中使用的逗号。

00:00:02,412 --> 00:00:04,363 vs 00:00:02:640 --> 00:00:05:160

我尝试用逗号替换冒号,效果很好。所以我的问题是,是否可以使用正则表达式字符串替换来完成此操作?如果是,那么如何。

2 个答案:

答案 0 :(得分:3)

尝试使用 Positive Lookbehind Positive Lookahead 来匹配所有无效的冒号,现在只需用逗号替换它。

(?<=\d{2}:\d{2}:\d{2}):(?=\d+)

Online demo

不需要任何编辑器。只需从演示中复制它。


Notepadd++

查找内容:(?<=\d{2}:\d{2}:\d{2}):(?=\d+) 替换为:,

不要忘记检查正则表达式单选按钮。

答案 1 :(得分:3)

也许是这样:

(\d{2}:\d{2}:\d{2}),(\d{3})

替换为

\1:\2

如果您的编辑器使用美元进行反向引用,请使用$1:$2