
Я сделал многострочное регулярное выражение поиска с помощью Notepad++. Строка начинается с INFO и заканчивается известным шаблоном цифр. Когда я нажимаю find после ввода моего регулярного выражения, я получаю правильные результаты, выделенные в главном окне.
Для моего варианта использования я хочу использовать find all in open documents
это же регулярное выражение. Проблема в том, что когда я это делаю, окно результатов поиска показывает только первую строку многострочного совпадения. Чтобы быть действительно полезным, мне нужно, чтобы все совпадение (которое в моем случае оказывается 2 строками почти всегда) отображалось в окне результатов поиска. Я хочу взять вывод экрана результатов поиска и использовать его в качестве входных данных для другого процесса, который выходит за рамки этого вопроса.
Так как мне отобразить все многострочное совпадение? Я могу придумать, как сделать это в виде программы на языке скриптов или программирования, но как сделать это из Notepad++?
решение1
Отрицательный ответ: Хотя можно искать и выбирать несколько строк в нескольких файлах, установив параметр регулярного выражения «. соответствует новой строке», на панели результатов поиска будет отображаться только первая строка для каждого найденного результата.
Это поведение встроено в Notepad++ и не может быть изменено. Я также просмотрел перечисленные плагины, и ни один из них не может изменить это.
Вы можете запросить это как запрос на функцию на Сообщество Notepad++, но я не вижу немедленного решения вашей проблемы.
решение2
Попробуйте следующее. Допустим, ваш документ начинается со слова INFO и заканчивается на 999.
Ваше регулярное выражение будет выглядеть так:
INFO.+?999
Для того, чтобы это работало сМНОГОЛИНИЙ, в окне поиска, прямо рядом с галочкой для использованияРегулярное выражение, есть флажок, который говорит. соответствует новой строке. Для работы вам необходимо выбрать его.
ps Проверил, работает на моем Notepad++ версии 7.5.1
ps2 Поиск возвращает только первую строку каждого вхождения. Так что если ваше совпадение начинается со строки 5, но заканчивается на строке 10, в окне поиска будет показано, что оно начинается со строки 5. Вы не можете изменить это поведение в приложении.
решение3
Удалось решить ее в два шага: первый шаг:
- соответствие многострочному
- замените его чем-нибудьотметкаи сохранить полезную информацию второй шаг:
- «найти в документе» = найти отмеченные строки [введите описание изображения здесь][1]
[1]: см. рабочий образецhttps://i.stack.imgur.com/ClQjU.png
решение4
Eстьхакерскийспособ добиться этого.
- В диалоговом окне поиска перейдите на вкладку «Отметить».
- Нажмите «Отметить все».
- Теперь нажмите «Копировать выделенный текст».
- Откройте новую вкладку и вставьте скопированный текст.
Теперь у вас будут отображаться все строки каждого совпадения результатов поиска, просто их не будет в окне Search results
. Еще один недостаток в том, что это будет работать только с текущим документом, ваше требование Find All in All Opened Documents
не будет выполнено.
На следующем gif-изображении показано выполнение этих шагов в журнале зоопарка (связь).