2017-01-05 9 views
1

Verwenden von REGEX (in PowerShell) Ich möchte ein Muster in einer Textdatei finden, die über zwei Zeilen ist und es durch neuen Text ersetzen und das Leerzeichen beibehalten. Beispieltext:regex beibehalten whitespace ersetzen

ObjectType=Page 
    ObjectID=70000 

Meine Matchstring ist

RunObjectType=Page;\s+RunObjectID=70000 

Das Ergebnis I

ObjectType=Page 
    ObjectID=88888 

Das Problem ist, will, ist mein Ersatz-String

RunObjectType=Page;`n+RunObjectID=88888 

kehrt

 ObjectType=Page 
ObjectID=88888 

Und ich brauche es, um den ursprünglichen Abstand zu halten. Um die Angelegenheit zu komplizieren, kann sich der Abstand ändern.

Vorschläge?

Antwort

1

Leverage eine Erfassungsgruppe und eine Rückreferenzierung zu dieser Gruppe im Ersetzungsmuster:

$s -replace 'RunObjectType=Page;(\s+)RunObjectID=70000', 'RunObjectType=Page;$1RunObjectID=88888' 

den See regex demo

Mit dem (\s+) Sie Capture alle Leerzeichen in den Puffer Gruppe 1 und Dann wird unter Verwendung der $1 Rückreferenz der Wert in das Ergebnis eingefügt.

enter image description here

+0

Danke, wusste ich, es einfach zu sein hatte, aber ich konnte es nicht sehen. – Greatscott000