/ / TextMate Ergebnis der Regex-Suche in neues Fenster speichern - Textmate

TextMate speichert das Ergebnis der Regex-Suche in einem neuen Fenster - Textmate

Ich möchte in der Lage sein, eine Suche in TextMate durchzuführen, aber die resultierenden Übereinstimmungen in eine separate Datei zu kopieren.

Ich verwende den folgenden Ausdruck:

(?<=()(.*?)(?=))

um eine E-Mail-Adresse zu finden, die in Klammern einer Textzeile eingebettet ist, so etwas wie:

A N Other (another@example.com)

Die Datei, von der aus ich arbeite, hat einige hundert Einträge, die alle durch CR-LF (n) getrennt sind.

Ich möchte nur die E-Mail extrahieren könnenSegment des Textes in eine neue Datei zur weiteren Verarbeitung. Der Suchdialog in TextMate scheint jedoch nur das Ersetzen von übereinstimmendem Text zu unterstützen. Ich habe mich nur gefragt, ob es einen Weg gibt, dies zu erreichen.

Antworten:

4 für die Antwort № 1

Das ist super alt, aber Sie können in TextMate2 Folgendes tun:

  1. Führen Sie Ihre Regex-Suche durch.
  2. Klicken Sie auf das Zahnradmenü im Suchfeld über den Ergebnissen rechts.
  3. Wählen Sie die Option Kopieren, die sich auf das bezieht, was Sie möchten. In diesem Fall "Passende Teile kopieren".

http://manual.textmate.org/searching.html#search-results


2 für die Antwort № 2

Der Befehl Bundles > Text > Filtering > Copy Matching Lines into New Document könnte ein guter Ausgangspunkt sein. Sie müssen jedoch vollständige Zeilen abgleichen. Konstruieren Sie daher einen Regex-Ausdruck, der alles vor und nach dem eigentlichen Text, den Sie extrahieren möchten, berücksichtigt (obwohl er gelöscht wird).


-1 für die Antwort № 3

Soweit ich weiß, kann TextMate nicht was Sie tunerreichen wollen. Wie Sie jedoch bereits erwähnt haben, möchten Sie Ihre Datei verarbeiten, d. H. Sie sollten ein einfaches Skript schreiben, das dies ausführt. Wenn Sie solche Dateien sehr häufig analysieren müssen, empfiehlt es sich möglicherweise, einen Befehl für TextMate zu schreiben (Bundles> Bundle-Editor> Bundle-Editor anzeigen> Neuer Befehl). Wenn es sich um eine einmalige Aktivität handelt, ist es wahrscheinlich besser, wenn Sie alles über die Befehlszeile ausführen, d. H. Verwenden Sie (falls erforderlich) grep, sed und awk, um Ihre Datei zu verarbeiten und in eine andere auszugeben. Oder verwenden Sie die Skriptsprache Ihrer Wahl. In Ruby würde es ungefähr so ​​aussehen

matches =[]
File.open(ARGV.first, "r") do |file|
while line = file.gets
match = file.match(/your_regular_expression_with_grouping/)
matches << match unless match.nil?
end
end
# write out matches which are saved in matches as follows:
# matches[i][0] contains original line of text,
# matches[i][1] result of first grouping,
# matches[i][2] result of second grouping, ...