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

28

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

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

Kiranshell
источник
Если вы используете плагин RegexExtract для Notepad ++, он может удалить дубликаты для вас, и нет необходимости в последующей обработке в Excel.
Р. Шреурс

Ответы:

53

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

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

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

  3. Выберите Поиск -> Закладка -> Удалить неотмеченные строки
  4. Сохраните оставшийся текст. Это обязательный список.
Анкит
источник
У меня есть еще один файл с тегами <> вместо%%, я пробовал использовать <(. *?)> И \ n <\ 1> \ n, но он не работает, пожалуйста, помогите.
Kiranshell
пожалуйста :) Для меня это работает и для <>. Есть ли вложенные <>? Не могли бы вы уточнить, что именно «не работает»?
Анкит,
Я пытаюсь составить список тегов, как раньше, но у них когда-то есть <>, я использую <(. *?)> Вместо% (. *?)% И \ n <\ 1> \ n вместо \ n % \ 1% \ n, это ссылка на образец файла. Wikisend.com/download/158050/tags.txt
Kiranshell,
Я попробовал еще раз с предоставленным текстом и используя <(. *?)>, Он работает нормально. Я получил список тегов <Supplies> <hostname> ..... и так далее
Ankit
Пожалуйста, укажите точную ошибку / проблему, с которой вы столкнулись. Звучит глупо, но не забудьте переместить курсор наверх. Я часто совершаю эту ошибку, и поиск не
дает
5

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

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

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


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

Скотт
источник
далеко не самый лучший ответ!
Чарльз-Антуан
2

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

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

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

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

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

  • Используйте пару скобок, чтобы позволить выбрать слово, без символов percetange.
  • Выберите опцию Извлечь с заменой , чтобы выбрать первое совпадение. В противном случае вы получите столбчатый вывод всех $ 1, $ 2 и т. Д.
  • Установите флажок Пропустить $ & ..., чтобы пропустить полные совпадения.
  • Установите флажок Фильтр, чтобы сообщить о каждом совпадении только один раз.
  • Нажмите « Извлечь», чтобы выбрать результат. ( Поиск только находит совпадения, но не сообщает).
Greck
источник
Хороший плагин, делает именно то, что просили.
Р. Шреурс
Кажется, не работает с 64-битным Блокнотом ++
Иван Чау
0

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

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

daveloyall
источник
Лично я выполняю эту операцию так часто, что настраиваю сочетание клавиш для функции «Копировать закладки»: Ctrl + Alt + c.
Давелоял
Я пришел к этому Вопросу, потому что искал вопрос Notepad ++. После многих лет лояльного и не платящего пользователя Textpad я перешел на Notepad ++ (GPL).
Давелоял