Експортуйте всі списки регулярних виразів у Textpad або Notepad ++ як список


28

У Textpad або Notepad ++ є можливість експортувати всі збіги для звичайного пошуку виразів як єдиний список?

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


Якщо ви використовуєте плагін RegexExtract для Notepad ++, він може видалити дублікати для вас, і немає необхідності в подальшій обробці з Excel.
Р. Шреурс

Відповіді:


53

Ви можете досягти цього, використовуючи функцію Backreferences і Find and Mark у Notepad ++.

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

  2. Використовуйте пошук -> Знайти -> Позначити функціональність, щоб позначити кожен рядок регулярними виразами %(.*?)%та не забудьте позначити « Рядок із закладками » перед позначенням тексту

  3. Виберіть Пошук -> Закладка -> Видалити немарковані лінії
  4. Збережіть текст, що залишився. Це необхідний список.

У мене є ще один файл з тегами <> замість%%, я спробував з <(. *?)> І \ n <\ 1> \ n, але його не працює, будь ласка, допоможіть.
Кіраншелл

ласкаво просимо :) Для мене це також працює для <>. Чи є вкладені <>? Не могли б ви пояснити, що саме "не працює"?
Анкіт

Я намагаюся скласти список тегів, як і раніше, але вони колись мають <>, я використовую <(. *?)> Замість% (. *?)% І \ n <\ 1> \ n замість \ n % \ 1% \ n, це посилання на зразок файлу wikisend.com/download/158050/tags.txt
Kiranshell

Я знову спробував це з наданим текстом і, використовуючи <(. *?)>, Його нормально працює. У мене з’явився список тегів <Supplies> <name_name> ..... і так далі
Ankit

Вкажіть, будь ласка, точну помилку / проблему. Можливо, це звучить нерозумно, але не забудьте перемістити курсор вгору. Я часто роблю цю помилку і пошук не дає результату ... :)
Ankit

5

Чи робить це в « Блокноті ++» обов’язковою вимогою? Ви перебуваєте в Windows або в якійсь формі Unix? Якщо ви працюєте в Windows, ви можете це зробити (частково) з командного рядка:

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

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


І, звичайно, якщо ви перебуваєте в Unix, ви можете виконати еквівалентне завдання за допомогою sed.


здалеку, найкраща відповідь!
Шарль-Антуан Фурнель

2

Є плагін Notepad ++, який може скопіювати збіг виражених регулярних виразів у новий файл на новій вкладці. RegexExtract

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

Відредагуйте вхідний діалог з урахуванням питання

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

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

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

Гарний плагін, робить саме те, що було запропоновано.
Р. Шреурс

Здається, не працює з 64-розрядним блокнотом ++
Іван Чау

0

У TextPad ви можете піднести Findвікно, як зазвичай, а потім скористатися Mark Allкнопкою.

Звідти використовуйте Copy Bookmarked Linesфункцію. (Меню редагування> Копіювати інше> Лінії із закладками.)


Особисто я виконую цю точну операцію так часто, що я налаштовував комбінацію клавіш для функції Copy Bookmarked Lines: Ctrl + Alt + c.
daveloyall

Я прийшов до цього питання, тому що шукав запитання «Блокнот ++». Після багатьох років, як лояльний та неоплачуваний користувач Textpad, я переходжу на Notepad ++ (GPL).
daveloyall
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.