Hilfe zu regulären Ausdrücken in Notepad++ erforderlich

Hilfe zu regulären Ausdrücken in Notepad++ erforderlich

Ich muss die Syntax für einen regulären Ausdruck (Notepad++) kennen, um alle Vorkommen der folgenden Zeichenfolge in einem Textdokument finden/ersetzen zu können

die Zeichenfolge lautet wie folgt

Where do you want to go next?
some text
some text
some text
Home

Nun kann der „Text“ eine einzelne oder mehrere Zeilen umfassen. Manchmal enthält die Zeichenfolge „Wohin möchten Sie als Nächstes gehen?“ nur eine Textzeile zwischen sich und Home.

Das allerletzte Element in dieser Liste ist immer das Wort „Home“ mit einem großen „H“.

Ich möchte jede Instanz dieses Textblocks (der in diesem Dokument buchstäblich Hunderte Male vorkommt) aus „Wohin möchten Sie als Nächstes gehen?“, allen Zeilen des Typs „irgendein Text“ und dem Wort „Home“ entfernen.

Ich bin auf Probleme gestoßen, weil „einiger Text“ variabel war und in einer neuen Zeile begann. Ich muss zugeben, dass ich mit regulären Ausdrücken nicht so gut bin, also denke ich, dass jemand auf Superuser.com ein paar Reputationspunkte gebrauchen könnte :)

Sagen Sie mir Bescheid, wenn Sie weitere Informationen benötigen.

Danke,

Richie

Antwort1

Neuere Versionen von Notepad++ (>6.1.x, glaube ich) unterstützen jetzt die mehrzeilige Übereinstimmung (ich verwende jetzt 6.1.5).

Im Dialogfeld „Suchen/Ersetzen“ gibt es neben dem Optionsfeld „Regulärer Ausdruck“ ein Kontrollkästchen namens „. stimmt mit Zeilenumbruch überein“, was eine Übereinstimmung mit mehreren Zeilen bedeutet.

Aktivieren Sie dieses Kontrollkästchen und verwenden Sie dann diesen regulären Ausdruck:

^Where do you want to go next\?.*?^Home$

Antwort2

Dieser reguläre Ausdruck hat bei mir funktioniert:

^Where do you want to go next?\r\n(.*\r\n)*?Home$

Windows verwendet \r\nfür neue Zeilen. Unix-basierte Systeme verwenden einfach \n.

Dieser Unterschied ist mir gerade erst eingefallen, also danke, dass Sie mir etwas Neues beigebracht haben. :-)

verwandte Informationen