我试图以递归方式在powershell中搜索和替换多个xml文件。我想避免脚本替换匹配文本的某些遮挡物。
例如,如果您采用以下示例XML
<title>this is a web-site</title>
<subtitle>web-site experience</subtitle>
<path>c:/web-site/web-site.xml</path>
</doc>
应在脚本之后更改
<title>this is a new-site</title>
<subtitle>new-site experience</subtitle>
<path>c:/web-site/web-site.xml</path>
</doc>
如果你看到上面我想忽略字符串/ web-site /和/ web-site。
我尝试使用OR运算符并忽略并替换为以下代码,但似乎没有帮助。
$content -replace '(^|[^/])web-site([^/]|$)|(^|[^/])web-site([^.]|$)', '$1new-Site$2' |
Out-File $file.FullName -Encoding utf8
您能告诉我如何在多种情况下使用条件OR
答案 0 :(得分:0)
由于它是XML,我建议像XML一样解析这些文件。请看下面的代码:
$xml = [xml]"<doc>
<title>this is a web-site 1</title>
<title>this is a web-site 2</title>
<subtitle>web-site experience</subtitle>
<path>c:/web-site/web-site.xml</path>
</doc>"
$xml.doc.SelectNodes("title") | % { $_.InnerText = $_.InnerText.Replace("web-site", "new-site") }
$xml.doc.title