Нужна помощь с регулярными выражениями в Notepad++

Нужна помощь с регулярными выражениями в Notepad++

Мне нужно знать синтаксис регулярного выражения (Notepad++), чтобы найти/заменить каждое вхождение следующей строки в текстовом документе

строка выглядит следующим образом

Where do you want to go next?
some text
some text
some text
Home

Теперь 'some text' может быть одной строкой или несколькими строками текста. Иногда строка 'Where do you want to go next?' будет иметь только одну строку текста между ней и Home.

Самым последним пунктом в этом списке всегда будет слово «Дом» с заглавной буквы «Н».

Я хочу удалить все вхождения этого блока текста (который встречается в этом документе буквально сотни раз) из раздела «Куда вы хотите перейти дальше?», все строки «какой-то текст» и слово «Главная».

Где я столкнулся с проблемами, так это с тем, что 'some text' был переменным и начинался с новой строки. Признаюсь, я не очень хорош в регулярных выражениях, поэтому я думаю, что кто-то на Superuser.com мог бы использовать несколько очков репутации :)

Дайте мне знать, если вам понадобится дополнительная информация.

Спасибо,

Ричи

решение1

Более новая версия Notepad++ (>6.1.x, я думаю) теперь поддерживает многострочное сопоставление (сейчас я использую 6.1.5)

В диалоговом окне «Найти/Заменить» рядом с переключателем «Регулярное выражение» есть флажок «. matches newline», который означает многострочное сопоставление.

Отметьте этот флажок, а затем используйте это регулярное выражение:

^Where do you want to go next\?.*?^Home$

решение2

Это регулярное выражение сработало для меня:

^Where do you want to go next?\r\n(.*\r\n)*?Home$

Windows использует \r\nдля новых строк. Системы на базе Unix просто используют \n.

Это различие пришло мне в голову только сейчас, так что спасибо, что научили меня чему-то новому. :-)

Связанный контент