2014-06-05 13 views
6

Ich habe eine Textdatei mit Informationen über eine Aufnahme, einschließlich Titelnummern und Namen, und ich möchte den ganzen anderen Text löschen, mit Ausnahme der Titelnummer und Titelnamen. Zum Beispiel sieht der Textdatei wie folgt aus:notepad ++ den gesamten Text löschen, außer was mit Regex übereinstimmt

text text text text 
text text text text text text text text 
text text text text text text text text text text text text 
text text text text 
text text text text text text text text 
text text text text 
text text text text text text text text text text text text text text text text 
text text text text text text text text 
text text text text 

d1t01 - trackname 

d1t02 - trackname 

d1t03 - trackname 

d1t04 - trackname 

d1t05 - trackname 

d1t06 - trackname 

d1t07 - trackname 

d1t08 - trackname 

d1t09 - trackname 

d1t10 - trackname 

d1t11 - trackname 

text text text text 
text text text text text text text text 
text text text text text text text text text text text text 
text text text text 
text text text text text text text text 
text text text text 
text text text text text text text text text text text text text text text text 
text text text text text text text text 
text text text text 

ich gerade dies gelassen werden wollen:

d1t01 - trackname 

d1t02 - trackname 

d1t03 - trackname 

d1t04 - trackname 

d1t05 - trackname 

d1t06 - trackname 

d1t07 - trackname 

d1t08 - trackname 

d1t09 - trackname 

d1t10 - trackname 

d1t11 - trackname 

ich herausgefunden, wie die Anfang der Zeile passen mit dieser Regex:

d[0-9]+t[0-9]+[0-9]+ - 

Aber ich kann nicht herausfinden, wie Sie den Rest des "Textes" löschen und nur diese Zeilen verlassen. Ich brauche es auch, um die "Returns" zu löschen und keine Leerzeilen in der Textdatei zu hinterlassen.

Vielen Dank!

Antwort

12

BEARBEITEN: Sie sollten die folgenden hier verwenden können.

Find: ^(?!d\w+).*\r?\n? 
Replace: 

Regulärer Ausdruck:

^    the beginning of the string 
(?!   look ahead to see if there is not: 
    d    'd' 
    \w+   word characters (a-z, A-Z, 0-9, _) (1 or more times) 
)    end of look-ahead 
.*    any character except \n (0 or more times) 
\r?   '\r' (carriage return) (optional) 
\n?   '\n' (newline) (optional) 
4

Hwnd Antwort liegt in der Nähe, aber es wird alle neuen Zeilen nicht entfernen. Sie sagten, Sie haben überhaupt keine Leerzeilen in der Datei wollen, so wäre dies eine vollständigere Lösung sein:

Finden:^(?! d [0-9] + t [0- 9] +). * \ R? \ N?

ersetzen: - Match Linien

In diesem Fall Ihr erster Textkörper würde durch

d1t01 - trackname 
d1t02 - trackname 
d1t03 - trackname 
d1t04 - trackname 
d1t05 - trackname 
d1t06 - trackname 
d1t07 - trackname 
d1t08 - trackname 
d1t09 - trackname 
d1t10 - trackname 
d1t11 - trackname 
0

Schritt 1 ersetzt werden. Find dialog> Registerkarte markieren, können Sie übereinstimmende Zeilen mit einem Lesezeichen versehen.

Schritt 2 - Entfernen Sie mit Lesezeichen markierte Zeilen ODER Entfernen Sie nicht markierte Zeilen. Suchen> Lesezeichen> Nicht markierte Zeilen entfernen oder Markierte Zeilen entfernen

Verwandte Themen