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

35195
Kiranshell

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

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

22
Если вы используете плагин RegexExtract для Notepad ++, он может удалить дубликаты для вас, и нет необходимости выполнять постобработку в Excel. R. Schreurs 5 лет назад 0

4 ответа на вопрос

47
Ankit

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

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

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

  3. Выберите Поиск -> Закладка -> Удалить неотмеченные строки
  4. Сохраните оставшийся текст. Это обязательный список.
I have one more file with <> as tags instead of % %, I tried with <(.*?)> and \n<\1>\n, but its not working, please help. Kiranshell 11 лет назад 0
you are welcome :) For me its working for <> also. Are there Nested <> ? Could you elaborate what exactly is 'not working' ? Ankit 11 лет назад 0
Я пытаюсь составить список тегов, как раньше, но у них когда-то есть <>, я использую <(. *?)> Вместо% (. *?)% И \ n <\ 1> \ n вместо \ n % \ 1% \ n, это ссылка на файл примера http://wikisend.com/download/158050/tags.txt Kiranshell 11 лет назад 0
Я попробовал еще раз с предоставленным текстом и используя <(. *?)>, Он работает нормально. Я получил список тегов .....и так далее Ankit 11 лет назад 0
Пожалуйста, укажите точную ошибку / проблему, с которой вы столкнулись. Звучит глупо, но не забудьте переместить курсор наверх. Я часто делаю эту ошибку, и поиск не дает результата ... :) Ankit 11 лет назад 0
Вы были правы :), я установил направление поиска вверх, лол. Огромное спасибо, Лэмб, это заставило меня заинтересоваться регулярными выражениями. Kiranshell 11 лет назад 0
5
Scott

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

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

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


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

далеко не самый лучший ответ! Charles-Antoine Fournel 6 лет назад 0
1
Greck

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

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

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

enter image description here

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

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

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

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

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

Похожие вопросы