2016-12-07 6 views
0

Ich möchte eine bestimmte Zeichenfolge aus einer Textdatei mit einigen tausend Zeilen extrahieren. Die Datei enthält leere Zeilen, die unbedingt beibehalten werden müssen. Ich schaffe es, alle Zeichenfolgen abzugleichen, aber ich schaffe es nicht, sie zu behalten, während ich alles andere lösche, das sich in derselben Zeile befindet. Ich habe versucht, negative Lookaheads - sie nur eine Instanz des Musters pro Zeile übereinstimmen.RegEx extrahieren Zeichenfolge, halten Zeilen intakt

Ich benutzte SublimeText, aber ich konnte auch jeden Befehlszeilen-Regex-Interpreter verwenden.

Meine Daten sieht wie folgt aus:

.... 
Some Text, more text 
[empty line] 
Silberdruck 
Golddruck, Silberdruck 
[empty line] 
Some Text, Silberdruck 
Golddruck some text, Silberdruck 
... 

Ich brauche alle Wörter zu halten * druck containg, so dass die Daten sollte wie folgt aussehen:

....  
[empty line] 
[empty line] 
Silberdruck 
Golddruck, Silberdruck 
[empty line] 
Silberdruck 
Golddruck Silberdruck 
.... 

Das Muster mehrere Male pro Zeile angezeigt werden könnten .

Danke für Ihre Hilfe!

+0

Probieren Sie '(\ h * \ w * druck \ b [[: punct:] \ h] *) | .' ->' $ 1' in Sublime –

+0

Danke, das funktioniert gut! – kbecker87

Antwort

0

können Sie verwenden

(\h*\w*druck\b[[:punct:]\h]*)|. 

und ersetzen mit $1

Einzelheiten:

  • (\h*\w*druck\b[[:punct:]\h]*) - Gruppe 1 der Erfassung der Folge von
    • \h* - 0+ horizontal Leerzeichen
    • \w* - 0+ Wort verkohlt
    • druck\b - druck mit einer Wortgrenze gefolgt
    • [[:punct:]\h]* - null oder mehr Interpunktions oder horizontal Leerzeichen
  • | - oder
  • . - ein beliebiges Zeichen außer einem Zeilenumbruch Zeichen
+0

Froh, dass es für Sie funktioniert hat. Bitte denken Sie daran, die Antwort zu akzeptieren, indem Sie auf das ✓ auf der linken Seite klicken (siehe [So akzeptieren Sie SO Antworten] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)) . –

Verwandte Themen