Выберите n-ю строку с условием первой строки - PullRequest
1 голос
/ 25 марта 2019

У меня есть файл субтитров, который был автоматически сгенерирован для одного из видео на 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 Ответ

1 голос
/ 25 марта 2019

Вы можете использовать следующее регулярное выражение:

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

Заменить на $1. Смотрите regex demo .

Подробнее

  • ^ - начало строки
  • (\d+\r?\n.*?-->.*) - Группа захвата 1:
    • \d+ - 1+ цифр
    • \r?\n - разрыв строки CRLF или LF
    • .*?-->.* - строка, в которой есть --> (чтобы сделать сопоставление более безопасным, ваш .+ тоже может это сделать, если вы уверены, что нет текстовых строк субтитров, которые состоят только из цифр)
  • \r?\n - CRLF или LF
  • .+ - 1 или более символов, кроме символов разрыва строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...