2016-09-16 4 views
1

Verwenden von Regex finden/ersetzen in Notepadd ++ Wie kann ich alle Leerzeichen aus einer Zeile entfernen, wenn die Zeile mit 'KAPITEL' beginnt?Entfernen Sie alle Leerzeichen aus Zeilen beginnend mit bestimmten Wort

Beispiel Text:

CHAPTER A B C 
Once upon a time. 

Was will ich mit am Ende:

CHAPTERABC 
Once upon a time. 

Falscher Code ist so etwas wie:

(?<=CHAPTER)()(?<=\r\n) 

So 'KAPITEL' muss bleiben und Die Suche sollte bei der ersten Zeilenumbruch anhalten.

+2

Was ist Ihre Umgebung? Probieren Sie '(?:^KAPITEL | (?! ^) \ G) \ S * \ K \ h +' aus. Wie sehen Textmuster aus? –

+0

@ WiktorStribiżew Ich habe die Frage aktualisiert. Ihr Vorschlag funktioniert gut - können Sie das als Antwort mit einer kleinen Erklärung hinzufügen, wie es funktioniert? – user500665

Antwort

2

können Sie verwenden, um eine \G basierte Regex nur eine Linie entsprechen, die mit CHAPTER beginnt und dann nur aufeinanderfolgende Nicht-Leerzeichen und Leer Chunks entsprechen, während bis zum Zeilenumbruch die angepassten nicht-Leerzeichen Brocken Weglassen und nur die horizontalen Leerzeichen entfernen:

(?:^CHAPTER|(?!^)\G)\S*\K\h+ 

Einzelheiten:

  • (?:^CHAPTER|(?!^)\G) - CHAPTER am Anfang einer Zeile (^CHAPTER) oder (|) das Ende der letzten erfolgreichen Spiel ((?!^)\G, als \G auch den Beginn einer Linie entsprechen können, verwenden wir die retricting negative Vorschau)
  • \S* -. Null oder mehr Nicht-Leerzeichen Symbole
  • \K - eine Übereinstimmung Reset Bediener zwingt die regex Motor den Text so weit angepaßt wegzulassen (also wir nicht entfernen CHAPTER oder einen der nicht-Leerzeichen chunks)
  • \h+ - horizontal Leerraum (1 oder mehrere Vorkommen) nur

enter image description here

Verwandte Themen