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

35347
Kiranshell

Gibt es in Textpad oder Notepad ++ eine Option zum Exportieren aller Übereinstimmungen für die Suche nach regulären Ausdrücken als eine einzige Liste?

In einer großen Textdatei suche ich nach Tags (Wörter, die in%% eingeschlossen sind) und verwende reguläre Ausdrücke. %\< and \>%Ich möchte alle Übereinstimmungen als eine einzige Liste anzeigen, sodass ich mit Excel Duplikate entfernen und eine Liste eindeutiger Tags erhalten kann.

22
Wenn Sie das RegexExtract-Plugin für Notepad ++ verwenden, können Duplikate für Sie entfernt werden, und eine Nachbearbeitung mit Excel ist nicht erforderlich. R. Schreurs vor 6 Jahren 0

4 Antworten auf die Frage

47
Ankit

Sie können dies erreichen, indem Sie in Notepad ++ die Funktionen Backreferences und Find and Mark verwenden.

  1. Finden Sie die Übereinstimmungen mit regex (say %(.*?)%) und ersetzen Sie sie durch. Danach \n%\1%\nhaben wir unser Zielwort in separaten Zeilen (dh keine Zeile enthält mehr als ein übereinstimmendes Wort).

  2. Verwenden Sie die Funktion Suchen -> Suchen -> Markieren, um jede Zeile mit Regex zu markieren, %(.*?)%und markieren Sie die Option " Lesezeichenzeile ", bevor Sie den Text markieren

  3. Wählen Sie Suchen -> Lesezeichen -> Nicht markierte Zeilen entfernen
  4. Speichern Sie den restlichen Text. Es ist die erforderliche Liste.
Ich habe eine weitere Datei mit <> als Tags anstelle von%%, ich habe es mit <(. *?)> Und \ n <\ 1> \ n versucht, aber es funktioniert nicht, bitte helfen Sie. Kiranshell vor 12 Jahren 0
Sie sind herzlich willkommen :) Für mich arbeitet es auch für <>. Gibt es verschachtelte <>? Könnten Sie etwas näher erläutern, was "nicht funktioniert"? Ankit vor 12 Jahren 0
Ich versuche, eine Liste von Tags wie zuvor 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 http://wikisend.com/download/158050/tags.txt Kiranshell vor 12 Jahren 0
Ich habe es erneut mit dem bereitgestellten Text versucht und mit <(. *?)> Funktioniert es normal. Ich habe die Liste der Tags erhalten .....und so weiter Ankit vor 12 Jahren 0
Bitte nennen Sie den genauen Fehler / das Problem, das Sie haben. Das klingt vielleicht dumm, aber denken Sie daran, den Cursor nach oben zu bewegen. Ich mache diesen Fehler oft und die Suche liefert kein Ergebnis ... :) Ankit vor 12 Jahren 0
du hattest recht :), ich habe die Suchrichtung nach oben gesetzt, lol. Vielen Dank, Lamb, diese Staffel hat mich an regulären Ausdrücken interessiert. Kiranshell vor 12 Jahren 0
5
Scott

Ist dies in Notepad ++ eine zwingende Voraussetzung? Bist du unter Windows oder irgendeiner Form von Unix? Wenn Sie unter Windows arbeiten, können Sie dies (teilweise) über die Eingabeaufforderung ausführen:

findstr / r "% [az]. * [az] %% [az]%" Ihre_Datei > Neue_Datei 

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


Und wenn Sie Unix verwenden, können Sie die entsprechende Aufgabe natürlich mit erledigen sed.

von weitem die beste Antwort! Charles-Antoine Fournel vor 7 Jahren 0
1
Greck

Es gibt ein Notepad ++ - Plugin, das übereinstimmende Regex-Ausdrücke in eine neue Datei in der neuen Registerkarte kopieren kann. RegexExtract

Da ich kein Plugin für Notepad ++ gefunden habe, das Text aus dem aktuellen Dokument oder alle Dateien eines Standorts mit zusätzlichen Einstellungen (z. B. Fallkonvertierung) extrahieren kann, habe ich mich dazu entschlossen, es selbst zu erstellen. (...) Die Plugin-Schnittstelle ist ziemlich unkompliziert (...). (...) Die Felder "Suchen", "Ersetzen" und "Maske" verwenden die Regex-Syntax von C ++ 11. Das Extrahieren von Dateien funktioniert jetzt nur für UTF8-Benutzer.

Bearbeiten Dialog Eingabe auf die Frage abgestimmt

Im Bild sehen Sie, wie Sie den Dialog ausfüllen. Ich gehe davon aus, dass ein Wort keine Leerzeichen usw. enthält, nur Zeichen, die mit \ w übereinstimmen. Vor allem:

  • Verwenden Sie ein Paar Klammern, um das Wort ohne die Percetange-Zeichen auswählen zu können.
  • Wählen Sie die Option Mit Ersetzen extrahieren aus, um die erste Übereinstimmung auszuwählen. Andernfalls erhalten Sie eine säulenförmige Ausgabe aller $ 1, $ 2 usw.
  • Markieren Sie Skip $ & ..., um die gesamten Matches auszuschließen.
  • Aktivieren Sie die Option Filter eindeutig, um jede Übereinstimmung nur einmal zu melden.
  • Klicken Sie auf Extrahieren, um Ergebnisse abzurufen. (Die Suche findet nur die Übereinstimmungen, meldet jedoch nicht).
Nettes Plug-In, macht genau das, was gefragt wurde. R. Schreurs vor 6 Jahren 0
0
daveloyall

In TextPad würden Sie die FindBox wie gewohnt öffnen und dann die Mark AllSchaltfläche verwenden.

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

Ich persönlich mache diese exakte Operation so oft, dass ich eine Tastenkombination für die Funktion "Markierte Zeilen kopieren" konfiguriert habe: Strg + Alt + c. daveloyall vor 7 Jahren 0
I came to this Question because I was searching for the Notepad++ question. After many years as a loyal and unpaying Textpad user, I'm switching to Notepad++ (GPL). daveloyall vor 7 Jahren 0