powershell取代特殊字符

时间:2012-08-10 09:56:59

标签: xml powershell replace special-characters

我对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

        }

问题是这只是我必须替换的字符串的开头。有没有办法替换某个范围内的任何文本,而不是内部的字符?

我想知道如何替换完整的字符串,无论我有什么特殊字符。 提前谢谢。

2 个答案:

答案 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

        }