Eksportuj wszystkie dopasowania wyrażeń regularnych w Textpad lub Notepad ++ jako listę


28

Czy w Textpad lub Notepad ++ istnieje możliwość wyeksportowania wszystkich dopasowań dla znalezienia wyrażeń regularnych jako pojedynczej listy?

W dużym pliku tekstowym szukam znaczników (słów zawartych w%%), używając wyrażeń regularnych %\< and \>%, i chcę, aby wszystkie dopasowania były pojedynczą listą, dzięki czemu mogę usunąć duplikaty za pomocą programu Excel i uzyskać listę unikatowych znaczników.


Jeśli używasz wtyczki RegexExtract dla Notepad ++, może ona usunąć duplikaty za Ciebie i nie ma potrzeby późniejszego przetwarzania w programie Excel.
R. Schreurs,

Odpowiedzi:


53

Można to osiągnąć za pomocą funkcji Odwołania wsteczne oraz funkcji Znajdź i zaznacz w Notepad ++.

  1. Znajdź dopasowania za pomocą wyrażenia regularnego (powiedzmy %(.*?)%) i zastąp je \n%\1%\n, po tym będziemy mieć nasze słowo docelowe w osobnych wierszach (tzn. Żadna linia nie będzie zawierała więcej niż jednego dopasowanego słowa)

  2. Użyj funkcji Wyszukaj -> Znajdź -> Zaznacz, aby zaznaczyć każdą linię wyrażeniem regularnym %(.*?)%i pamiętaj, aby zaznaczyć „ Zakładkę linii ” przed zaznaczeniem tekstu

  3. Wybierz Szukaj -> Zakładka -> Usuń nieoznaczone linie
  4. Zapisz pozostały tekst. Jest to wymagana lista.

Mam jeszcze jeden plik z tagami <> zamiast%%, próbowałem z <(. *?)> I \ n <\ 1> \ n, ale to nie działa, proszę o pomoc.
Kiranshell,

nie ma za co :) Dla mnie też działa dla <>. Czy są zagnieżdżone <>? Czy możesz wyjaśnić, co dokładnie „nie działa”?
Ankit

Próbuję utworzyć listę tagów jak poprzednio, ale kiedyś mają one <>, używam <(. *?)> Zamiast% (. *?)% I \ n <\ 1> \ n zamiast \ n % \ 1% \ n, to jest link do przykładowego pliku wikisend.com/download/158050/tags.txt
Kiranshell

Próbowałem ponownie z podanym tekstem i używając <(. *?)>, Działa normalnie. Mam listę tagów <Supplies> <nazwa_hosta> ..... i tak dalej
Ankit

Podaj dokładny błąd / problem, który masz. Może to zabrzmi głupio, ale pamiętaj, aby przesunąć kursor na górę. Często popełniam ten błąd i wyszukiwanie nie zwraca rezultatu ... :)
Ankit

5

Czy robienie tego w Notepad ++ jest obowiązkowe? Czy korzystasz z systemu Windows lub jakiejś formy Uniksa? Jeśli korzystasz z systemu Windows, możesz to zrobić (częściowo) z wiersza polecenia:

findstr / R "% [AZ]. * [AZ%]% [AZ%]" your_file > nowy_plik

findstrjest niejasno zainspirowany grep, więc ten nowy_plik zawiera wszystkie wiersze pasujące do twoich kryteriów wyszukiwania; możesz następnie użyć Notepad ++, aby usunąć niechciany tekst (na lewo od pierwszego% i na prawo od drugiego).


Oczywiście, jeśli korzystasz z Uniksa, możesz wykonać równoważne zadanie sed.


z daleka najlepsza odpowiedź!
Charles-Antoine Fournel

2

Istnieje wtyczka Notepad ++, która może kopiować dopasowane wyrażenie regularne do nowego pliku w nowej karcie. RegexExtract

Ponieważ nie znalazłem żadnej wtyczki do Notepad ++, która mogłaby wyodrębnić tekst z bieżącego dokumentu lub wszystkich plików z lokalizacji z dodatkowymi ustawieniami (np. Konwersja wielkości liter), postanowiłem spróbować zrobić to sam. (...) Interfejs wtyczki jest dość prosty (...). (...) Pola „Znajdź”, „Zamień” i „Maska” używają składni wyrażenia regularnego C ++ 11. Wyodrębnianie z plików działa teraz tylko dla plików w UTF8.

Edytuj dane wejściowe okna dialogowego dostosowane do pytania

wprowadź opis zdjęcia tutaj

Na obrazku widać, jak wypełnić okno dialogowe. Zakładam, że słowo nie zawiera spacji itp., A jedynie znaki pasujące do \ w. Szczególnie:

  • Użyj pary nawiasów, aby umożliwić wybranie słowa, bez znaków pośrednich.
  • Wybierz opcję Wyodrębnij z zamień , aby wybrać pierwsze dopasowanie. W przeciwnym razie otrzymasz wynik kolumnowy o wartości 1 USD, 2 USD itp.
  • Zaznacz Pomiń $ i ..., aby pominąć pełne dopasowania.
  • Zaznacz Filtr unikalny, aby raportować każde dopasowanie tylko raz.
  • Kliknij Wyodrębnij, aby wybrać uzyskać wyniki. ( Wyszukiwanie wyszukuje tylko dopasowania, ale nie zgłasza).

Ładna wtyczka, robi dokładnie to, o co poproszono.
R. Schreurs,

Wygląda na to, że nie działa z 64-bitowym Notepad ++
Ivan Chau

0

W TextPad przywołujesz Findpole jak zwykle, a następnie używasz Mark Allprzycisku.

Stamtąd użyj Copy Bookmarked Linesfunkcji. (Edycja menu> Kopiuj inne> Linie zakładek).


Osobiście wykonuję tę dokładną operację tak często, że skonfigurowałem skrót klawiaturowy dla funkcji Kopiuj zaznaczone linie: Ctrl + Alt + c.
daveloyall

Przyszedłem do tego pytania, ponieważ szukałem pytania Notepad ++. Po wielu latach jako lojalny i nieopłacalny użytkownik TextPada przechodzę do Notepad ++ (GPL).
daveloyall
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.