PowerShell:在“替换”和“包含”操作中转义字符

时间:2016-11-03 14:21:21

标签: powershell

我尝试用$(foo)\bar字符串替换所有出现的$(foo)\baz\bar,我不需要扩展任何内容而且我不需要使用正则表达式。

这是我的代码:

if($myString.contains("$(foo)\bar\"))
{
    $myString = $myString -replace "$(foo)\bar\","$(foo)\baz\bar\"
    ...
}

它不起作用,我完全失去了逃避$(\等字符的方式,时间和地点。我应该在字符串中使用单引号还是双引号?

这是我的尝试:

if($myString.contains("`$(foo)\\bar\\"))
{
    $myString = $myString -replace '\$(foo)\\bar\\','\$(foo)\\baz\\bar\\'
    ...
}

1 个答案:

答案 0 :(得分:1)

-replace命令始终适用于正则表达式。您可以正确地转义字符串,也可以只使用字符串对象的.replace - 方法。该方法不使用正则表达式,因此不需要转义:

if($myString.contains("`$(foo)\\bar\\"))
{
$myString = $myString.replace( '$(foo)\bar\','$(foo)\baz\bar\')
...
}