Regex для удаления последовательных строк с указанным символом c - PullRequest
3 голосов
/ 02 мая 2020

У меня есть огромный текстовый файл для сортировки, и я заметил, что строки, которые мне не нужны, обычно содержат символ дефиса - и более 3 строк подряд. Поэтому я хочу использовать регулярные выражения для удаления этих строк.

Я пробовал это: ^.*(?:\-.*?){3}.*(?:\R|\Z), но это работает только в пределах одной строки, в то время как мне нужно удалить только последовательные строки с -, начиная с 3 и более.

Пример моего текста:

Good Line 1
Error-1
Error-2:3045
Error-3-32
Good Line 2
Error-4_sub
Error-5.0
Error-6...0
Error-7
Error-8-9
Error-9
Good Line 3

желаемый выход

Good Line 1
Good Line 2
Good Line 3

1 Ответ

4 голосов
/ 02 мая 2020
  • Ctrl + H
  • Найти что: (?:^.*?-.*(?:\R|\z)){4,}
  • Заменить на: LEAVE EMPTY
  • CHECK Обтекание
  • CHECK Регулярное выражение
  • UNCHECK . matches newline
  • Заменить все

Объяснение:

(?:                 # Beginning non capture group
^                   # beginning of line
  .*?               # 0 or more any character but newline, not greedy
  -                 # hyphen
  .*                # 0 or more any character but newline
  (?:\R|\z)         # non capture group, any kind of linebreak OR end of file
){4,}               # end group, must appear 4 or more times
                        # set the value to your needs

Снимок экрана (до) :

enter image description here

Снимок экрана (после):

enter image description here


Строки закладки:

enter image description here

...