Извлечение указанных c строк текста на основе одной строки текста с помощью Notepad ++ - PullRequest
1 голос
/ 19 марта 2020

У меня есть строки ниже в огромном текстовом файле, и я хочу извлечь LineD и другие строки перед ним. Если набор не содержит строку D, он должен игнорировать набор

LineA
LineB 
LineC

Line1
Line2 
Line3
LineD

Linex
LineY 
LineZ

Line4
Line5 
Line6
LineD

Выход должен быть

Line1
Line2 
Line3
LineD

Line4
Line5 
Line6
LineD

1 Ответ

1 голос
/ 19 марта 2020
  • Ctrl + H
  • Найти что: (?:\A|\R\R)(?:(?!LineD)[\s\S])*?(?=\R\R|\z)
  • Заменить на: LEAVE EMPTY
  • ПРОВЕРКА Матч
  • ПРОВЕРКА Обтекание
  • ПРОВЕРКА Регулярное выражение
  • UNCHECK . matches newline
  • Заменить все

Пояснение:

(?:\A|\R\R)     # non capture group, beginning of file OR 2 linebreaks
(?:             # non capture group
  (?!LineD)     # negative lookahead, make sure sure we haven't "LineD"
  [\s\S]        # any character, including linebreak
)*?             # end group, may appear 0 or more times, not greedy
(?=\R\R|\z)     # positive lookahead, make sure we have a double linebreak OR end of file after.

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

enter image description here

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

enter image description here

...