我对powershell很新,但我试图替换.xml文件中的某些字符。看起来我已经遇到了第一步。
e.g。我会尝试替换:
<?xml version="1.0"?>
带
<?xml version="2.0"?>
下面你会找到我到目前为止写的代码:
Get-Childitem "C:\Users\jp\Desktop\Test" | ForEach-Object {
$Content = Get-Content $_.fullname
$Content = ForEach-Object { $Content -replace "(<?xml version=`"1.0`"?>)","(<?xml version=`"2.0`"?>)" }
Set-Content $_.fullname $Content -Force
}
问题是这只是我必须替换的字符串的开头。有没有办法替换某个范围内的任何文本,而不是内部的字符?
我想知道如何替换完整的字符串,无论我有什么特殊字符。 提前谢谢。
答案 0 :(得分:1)
使用Escape方法在运行时转义特殊字符。您无需转义替换模式:
(Get-Content c:\dump\xml) |
ForEach-Object {$_ -replace [regex]::Escape('<?xml version="1.0"?>'),'<?xml version="2.0"?>'} |
Set-Content c:\dump\xml
答案 1 :(得分:0)
您好有很多方法可以进行正则表达式匹配,只需将代码更改为下面的代码即可。
\只是逃避特殊的正则表达式章程,以便匹配部分工作。
Get-Childitem "c:\dump\xml" | ForEach-Object {
$Content = Get-Content $_.fullname
$Content = ForEach-Object { $Content -replace '(<\?xml version="1\.0"\?>)','<?xml version="2.0"?>' }
Set-Content $_.fullname $Content -Force
}