Multiline Regex in der PowerShell

7

Ich habe dieses PowerShell-Skript, das hauptsächlich dazu dient, HTML-Dateien innerhalb eines Ordners zu durchsuchen, ein bestimmtes HTML-Markup zu finden und durch das zu ersetzen, was ich ihm sage.

Ich konnte 3/4 meines Funds machen und ersetze perfekt. Der, mit dem ich Probleme habe, beinhaltet einen Regulären Ausdruck.

Dies ist das Markup, das ich versuchen möchte, meine Regex zu finden und zu ersetzen:

%Vor%

Hier ist der Regex, den ich bis jetzt habe, zusammen mit der Funktion, in der ich ihn verwende:

%Vor%

Und hier ist die automatische Funktion:

%Vor%

Ich habe seit etwa zwei Tagen versucht, die Lösung dafür zu finden und kann es einfach nicht funktionieren lassen. Ich habe festgestellt, dass das Problem ist, dass ich meine Regex für Multiline, und das ist, was ich mit Schwierigkeiten haben muss sagen.

Jede Hilfe, die jemand zur Verfügung stellen kann, ist sehr zu schätzen.

Vielen Dank im Voraus.

    
Matt Bettiol 20.02.2014, 14:51
quelle

3 Antworten

18

Get-Content erzeugt ein Array von Zeichenketten, wobei jede Zeichenkette eine einzelne Zeile aus Ihrer Eingabedatei enthält, so dass Sie keine Textpassagen mehr als eine Zeile abgleichen können. Sie müssen das Array in eine einzelne Zeichenfolge zusammenführen, wenn Sie mehr als eine Zeile zuordnen möchten:

%Vor%

oder

%Vor%

oder

%Vor%

Beachten Sie, dass die Methode 1 st und 2 nd keine Zeilenumbrüche aus der Eingabedatei erhalten. Methode 2 zerlegt einfach alle Zeilenumbrüche, wie Keith in den Kommentaren darauf hingewiesen hat, und Methode 1 setzt <CR><LF> am Ende jeder Zeile, wenn sie dem Array beitritt. Letzteres kann beim Umgang mit Linux / Unix- oder Mac-Dateien problematisch sein.

    
Ansgar Wiechers 20.02.2014, 15:04
quelle
1

Ich verstehe nicht, was Sie mit diesen Exclude-Elementen zu tun versuchen, aber ich finde, dass mehrzeiliger Regex in der Regel einfacher in einer here-Zeichenfolge zu konstruieren ist:

%Vor%     
mjolinor 20.02.2014 15:12
quelle
-1

Get-Content gibt ein Array von Strings zurück, die die fraglichen Strings verketten sollen, um eins zu erzeugen:

%Vor%     
Raf 20.02.2014 15:19
quelle

Tags und Links