正则表达式将字符插入空白 SRT

问题描述

我有一个与视频相关的空白SRT文件,时间码已经在转录软件平台中设置(即每个字幕的边界已经设置,但字幕还没有写下来),我上传了视频到 youtube,现在我想将空白的 SRT 文件复制到它,以便有人可以使用 YouTube 的转录/翻译平台转录它。

空白 SRT:

1
00:00:01,05 --> 00:00:04,64


2
00:00:05,02 --> 00:00:07,18


3
00:00:07,81 --> 00:00:11,03


4
00:00:11,04 --> 00:00:15,92


5
00:00:16,35 --> 00:00:17,11

但是有一个问题,因为字幕中没有文字,youtube 无法识别时间码,所以当 srt 上传到 youtube 中的视频时没有任何反应。

为了解决这个问题,我在每个时间代码下方的空行中放置了一个非字母数字字符(通常是“-”)。

带破折号的 SRT 文件

1
00:00:01,64
-

2
00:00:05,18
-

3
00:00:07,03
-

4
00:00:11,92
-

5
00:00:16,11
-

这是一个非常手动的过程,可能需要很长时间。必须有一种方法可以在 Notepad++ 之类的东西中使用查找和替换,然后简单地添加破折号。我正在尝试使用正则表达式来做到这一点,但遇到了问题。

^$ 正确定位空行,但是如果我简单地用“-”替换它们,我会得到:

1
00:00:01,64
-
-
2
00:00:05,18
-
-

这是不可接受的,因为它破坏了 SRT 的语法,当将这样的 SRT 上传到 youtube 时,它​​认为内容是单个字幕。因此,我只需要在第一个空行中放置一个破折号,即时间码正下方的那个。

我不知道如何只选择每对空行中的第一个空行。任何解决方案将不胜感激。

解决方法

您可以匹配行尾的特定格式,后跟换行符并直接断言字符串的末尾,然后替换为完整匹配和-

查找内容

-->\h+\d\d:\d\d:\d\d,\d+\R$

替换为

$0-

Regex demo

enter image description here

或者仅匹配逗号、数字和换行符后跟锚点的短变体:

,\d+\R$