选择第一行条件的第n行

时间:2019-03-25 12:20:55

标签: regex

我有为YouTube视频之一自动生成的字幕文件。

这里有4篇演讲。每个语音都有数字,时间,第一行和第二行。

我想删除每个时间段中该行的每个第一个文本。我需要它,因为当前当有新文本出现时,我会看到旧文本和新文本。换句话说,旧文本在上升,而新文本则从底部开始。我只想看看新的。

1
00:00:02,880 --> 00:00:06,550
[empty]<--to be removed
[Music]

2
00:00:06,550 --> 00:00:06,560
[Music]<--to be removed
[empty]    

3
00:00:06,560 --> 00:00:09,290
[Music]<--to be removed
my name is Maria and I'm a technical

4
00:00:09,290 --> 00:00:09,300
my name is Maria and I'm a technical<--to be removed
[empty]

我尝试了什么?我只能选择:数字行,时间行和第一个文本行。 (?= regexp )不适用于我的查询。这是我的查询:

(^\d+$\n.+$\n)
  • ^\d+$-以数字元素开头和结尾
  • \n.+$-选择新行,选择所有元素,直到行尾为止
  • \n-再选择一行,但不要选择元素

1 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式:

^(\d+\r?\n.*?-->.*)\r?\n.+

替换为$1。参见regex demo

详细信息

  • ^-一行的开头
  • (\d+\r?\n.*?-->.*)-捕获组1:
    • \d+-1个以上数字
    • \r?\n-CRLF或LF换行符
    • .*?-->.*-具有-->的行(这是为了使匹配更加安全,如果您确定没有字幕文本行,那么.+也可以这样做)由数字组成)
  • \r?\n-CRLF或LF
  • .+-除换行符以外的1个或更多字符。