Ich versuche zu suchen und in Powershell mehrere XML-Dateien rekursiv zu ersetzen. Ich möchte vermeiden, dass das Skript bestimmte Anpassungen passender Texte ersetzt.Bedingte Regex in Powershell suchen und ersetzen
Zum Beispiel, wenn Sie die folgenden XML-Beispiel
nehmen<title>this is a web-site</title>
<subtitle>web-site experience</subtitle>
<path>c:/web-site/web-site.xml</path>
</doc>
sollte als unten nach dem Skript
<title>this is a new-site</title>
<subtitle>new-site experience</subtitle>
<path>c:/web-site/web-site.xml</path>
</doc>
, wenn Sie die oben i die Zeichenfolge/web- ignorieren wollen sehen, geändert werden Website/und/Website.
Ich versuche, einen OR-Operator zu verwenden und ignorieren und durch den folgenden Code ersetzen, aber es scheint nicht zu helfen.
$content -replace '(^|[^/])web-site([^/]|$)|(^|[^/])web-site([^.]|$)', '$1new-Site$2' |
Out-File $file.FullName -Encoding utf8
Können Sie mir mitteilen, wie bedingte zu verwenden oder für mehrere Bedingungen
Sie sollten wahrscheinlich den XML-Knoten mit e auswählen. G. xpath und dann den Inhalt ändern? –
Ich weiß nicht, ob ich dich richtig verstehe. Da es xml-Dokument ist - möchten Sie nur andere Knoten als Titel ignorieren? –
Dies ist nur eine kleine Variation Ihrer vorherigen Frage. –