Оставить только строки в определенном теге
Есть многострочный текст вида:
произвольный текст
<тег>строка_1</тег>
произвольный текст
<тег>строка_2</тег>
...................
<тег>строка_N</тег>
произвольный текст
Количество строк не определено. Задача: в Notepad++ сделать замену таким образом, чтобы на выходе оставались только строки в теге:
<тег>строка_1</тег>
<тег>строка_2</тег>
...................
<тег>строка_N</тег>
Наиболее рабочим оказался вариант [\s\S]*?(<тег>.*?</тег>)[\s\S]*?, но он оставляет "хвост" в виде текста, который был после последней строки с тегом.
Спасибо и не стреляйте в пианиста...))
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Используйте
Найти: ^(?!<тег>.*</тег>$).*\R?
Заменить: <пусто>
Подробности
^- начало строки(?!<тег>.*</тег>$)- отрицательный блок просмотра вперёд, строка не должна начинаться с<тег>и заканчиваться</тег>.*- ноль и более любых символов, отличных от переноса строки, как можно больше (целая строка)\R?- опциональная любая последовательность переноса строки.
См. настройки и пример работы выражения:
