Экспорт всех совпадений регулярных выражений в Textpad или Notepad++ в виде списка

Экспорт всех совпадений регулярных выражений в Textpad или Notepad++ в виде списка

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

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

решение1

Вы можете добиться этого, используяОбратные ссылкии функции поиска и пометки в Notepad++.

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

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

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

решение2

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

findstr /r "%[az].*[az]% %[az]%"ваш_файл>новый файл

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


И, конечно, если вы работаете в Unix, вы можете выполнить эквивалентную задачу с помощью sed. А если у вас GNU grep(т. е. если вы работаете в Linux), вы можете выполнить ее с помощью grep -o.

решение3

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

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

Редактировать Диалоговый ввод, адаптированный к вопросу

введите описание изображения здесь

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

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

решение4

Если кого-то интересует онлайн-решение (поскольку плагин Notepad++ не работает на 64-битной системе), вы можете попробоватьМолбиоинструментыон может полностью извлечь ваше регулярное выражение без дополнительных строк или с ними.

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