Exportieren Sie alle Übereinstimmungen mit regulären Ausdrücken in Textpad oder Notepad ++ als Liste

28

Gibt es in Textpad oder Notepad ++ eine Option, um alle Übereinstimmungen für eine Suche nach regulären Ausdrücken als einzelne Liste zu exportieren?

In einer großen Textdatei suche ich mithilfe eines regulären Ausdrucks nach Tags (in%% eingeschlossene Wörter) %\< and \>%und möchte, dass alle Übereinstimmungen als eine einzige Liste angezeigt werden, damit ich doppelte Einträge mit Excel entfernen und eine Liste eindeutiger Tags erhalten kann.

Kiranshell
quelle
Wenn Sie das RegexExtract-Plug-In für Notepad ++ verwenden, können doppelte Dateien für Sie entfernt werden, und es ist keine Nachbearbeitung mit Excel erforderlich.
R. Schreurs

Antworten:

53

Sie können dies erreichen, indem Sie die Funktionen " Rückverweise" und "Suchen und markieren" in Notepad ++ verwenden.

  1. Finde die Übereinstimmungen mit Regex (sprich %(.*?)%) und ersetze sie durch. Danach \n%\1%\nhaben wir unser Zielwort in getrennten Zeilen (dh keine Zeile hat mehr als ein übereinstimmendes Wort).

  2. Verwenden Sie die Funktion Suchen -> Suchen -> Markieren, um jede Zeile mit Regex zu markieren. Vergessen Sie nicht , vor dem Markieren des Texts das %(.*?)%Kontrollkästchen " Lesezeichenzeile " zu aktivieren

  3. Wählen Sie Suchen -> Lesezeichen -> Nicht markierte Zeilen entfernen
  4. Speichern Sie den restlichen Text. Es ist die erforderliche Liste.
Ankit
quelle
Ich habe eine weitere Datei mit <> als Tags anstelle von%%. Ich habe es mit <(. *?)> Und \ n <\ 1> versucht, aber es funktioniert nicht. Bitte helfen Sie.
Kiranshell
Sie sind willkommen :) Für mich arbeitet es auch für <>. Gibt es geschachtelte <>? Könnten Sie näher erläutern, was genau "nicht funktioniert"?
Ankit
Ich versuche, eine Liste von Tags zu erstellen, aber diese haben einmal <>, ich verwende <(. *?)> Anstelle von% (. *?)% Und \ n <\ 1> \ n anstelle von \ n % \ 1% \ n, dies ist der Link zu einer Beispieldatei wikisend.com/download/158050/tags.txt
Kiranshell
Ich habe es mit dem bereitgestellten Text erneut versucht und <(. *?)> Verwendet, was normal funktioniert. Ich habe die Liste der Tags <Supplies> <Hostname> ..... und so weiter
Ankit
Bitte geben Sie den genauen Fehler / das genaue Problem an. Klingt vielleicht albern, aber denken Sie daran, den Cursor nach oben zu bewegen. Ich mache oft diesen Fehler und die Suche liefert kein Ergebnis ... :)
Ankit
5

Ist dies in Notepad ++ obligatorisch? Sind Sie auf Windows oder einer Form von Unix? Wenn Sie unter Windows arbeiten, können Sie dies (teilweise) über die Eingabeaufforderung tun:

findstr / r "% [az]. * [az] %% [az]%" your_file > new_file

findstrist vage inspiriert von grep, daher enthält diese neue Datei alle Zeilen, die Ihren Suchkriterien entsprechen. Sie können dann Notepad ++ verwenden, um den unerwünschten Text zu entfernen (links vom ersten% und rechts vom zweiten).


Wenn Sie unter Unix arbeiten, können Sie die entsprechende Aufgabe natürlich mit ausführen sed.

Scott
quelle
von weitem die allerbeste Antwort!
Charles-Antoine Fournel
2

Es gibt ein Notepad ++ - Plugin, mit dem ein passender regulärer Ausdruck in eine neue Datei in einem neuen Tab kopiert werden kann. RegexExtract

Da ich kein Plugin für Notepad ++ gefunden habe, das Text aus dem aktuellen Dokument oder alle Dateien von einem Speicherort mit einigen zusätzlichen Einstellungen (z. B. Groß- / Kleinschreibung) extrahieren kann, habe ich mich dazu entschlossen, es selbst zu erstellen. (...) Die Plugin-Oberfläche ist ziemlich einfach (...). (...) Die Felder "Suchen", "Ersetzen" und "Maske" verwenden die reguläre C ++ 11-Syntax. Das Extrahieren aus Dateien funktioniert derzeit nur in UTF8.

Bearbeiten Auf die Frage zugeschnittene Dialogeingabe

Bildbeschreibung hier eingeben

Im Bild können Sie sehen, wie der Dialog ausgefüllt wird. Ich gehe davon aus, dass ein Wort keine Leerzeichen usw. enthält, sondern nur Zeichen, die mit \ w übereinstimmen. Vor allem:

  • Verwenden Sie zwei Klammern, um das Wort ohne die Percetange-Zeichen auswählen zu können.
  • Wählen Sie die Option Mit Ersetzen extrahieren , um die erste Übereinstimmung auszuwählen. Andernfalls erhalten Sie eine Spaltenausgabe aller $ 1, $ 2 usw.
  • Aktivieren Sie Skip $ & ... , um die vollständigen Übereinstimmungen auszublenden.
  • Aktivieren Sie die Option "Filter eindeutig" , um jede Übereinstimmung nur einmal zu melden.
  • Klicken Sie auf Extrahieren , um Ergebnisse zu erhalten. (Die Suche findet nur die Übereinstimmungen, meldet sie jedoch nicht).
Greck
quelle
Nettes Plug-In, macht genau das, was gefragt wurde.
R. Schreurs
Scheint nicht mit 64-Bit-Editor ++ zu funktionieren
Ivan Chau
0

In TextPad rufen Sie die FindBox wie gewohnt auf und verwenden dann die Mark AllSchaltfläche.

Verwenden Sie von dort die Copy Bookmarked LinesFunktion. (Menü Bearbeiten> Andere kopieren> Mit Lesezeichen versehene Zeilen.)

daveloyall
quelle
Ich persönlich führe diese exakte Operation so oft aus, dass ich eine Tastenkombination für die Funktion "Mit Lesezeichen versehene Zeilen kopieren" konfiguriert habe: Strg + Alt + c.
Daveloyall
Ich bin zu dieser Frage gekommen, weil ich nach der Notepad ++ - Frage gesucht habe. Nach vielen Jahren als loyaler und unbezahlter Textpad-Benutzer wechsle ich zu Notepad ++ (GPL).
Daveloyall