23

В Textpad или Notepad++ есть ли возможность экспортировать все совпадения для поиска по регулярному выражению в виде единого списка?

В большом текстовом файле я ищу теги (слова, заключенные в%%), используя регулярные выражения %\< and \>% , и хочу, чтобы все совпадения были в одном списке, чтобы я мог удалить дубликаты с помощью Excel и получить список уникальных тегов.

4 ответа4

51

Вы можете достичь этого, используя функции Backreferences и Find and Mark в Notepad++.

  1. Найдите совпадения с помощью регулярных выражений (скажем, %(.*?)% ) и замените его на \n%\1%\n , после этого у нас будет целевое слово в отдельных строках (т.е. ни в одной строке не будет более одного совпавшего слова)

  2. Используйте функцию Поиск -> Найти -> Отметить, чтобы пометить каждую строку регулярным выражением %(.*?)% И не забудьте поставить галочку «Закладка Line» , прежде чем маркировка текста

  3. Выберите Поиск -> Закладка -> Удалить неотмеченные строки
  4. Сохраните оставшийся текст. Это обязательный список.
5

Является ли это в Notepad++ обязательным требованием?  Вы на Windows или в какой-то форме Unix?  Если вы работаете в Windows, вы можете сделать это (частично) из командной строки:

findstr /r "%[a-z].*[a-z]% %[a-z]%" your_file > new_file

findstr вдохновлен grep , поэтому этот новый_файл будет содержать все строки, соответствующие вашим критериям поиска; затем вы можете использовать Notepad++ для удаления нежелательного текста (слева от первого% и справа от второго).


И, конечно, если вы работаете в Unix, вы можете выполнить аналогичную задачу с помощью sed .

1

Существует плагин Notepad++, который может копировать совпадающее выражение регулярного выражения в новый файл на новой вкладке. REGEXEXTRACT

Поскольку я не нашел ни одного плагина для Notepad++, который мог бы извлечь какой-либо текст из текущего документа или всех файлов из местоположения с некоторыми дополнительными настройками (например, преобразованием регистра), я решил попробовать сделать это сам. (...) Интерфейс плагина довольно прост (...). (...) Поля "Найти", "Заменить" и "Маска" используют синтаксис регулярного выражения C++ 11. Извлечение из файлов работает сейчас только для тех, кто в UTF8.

Редактировать диалог ввода с учетом вопроса

На картинке вы можете увидеть, как заполнить диалог. Я предполагаю, что слово не содержит пробелов и т.д., Только символы, совпадающие с \w. В частности:

  • Используйте пару скобок, чтобы позволить выбрать слово, без символов percetange.
  • Выберите опцию Извлечь с заменой, чтобы выбрать первое совпадение. В противном случае вы получите столбчатый вывод всех $ 1, $ 2 и т.д.
  • Установите флажок Пропустить $ & ..., чтобы пропустить полные совпадения.
  • Установите флажок Фильтр, чтобы сообщить о каждом совпадении только один раз.
  • Нажмите « Извлечь», чтобы выбрать результат. (Поиск только находит совпадения, но не сообщает).
0

В TextPad вы, как обычно, вызываете окно Find а затем используете кнопку « Mark All .

Оттуда, используйте функцию Copy Bookmarked Lines . (Меню «Правка»> «Копировать другие»> «Линии с закладками».)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .