Powershell 替换失败的文本

Powershell 替换失败的文本,powershell,Powershell,我一直在尝试各种组合,但我就是无法替换下面我想要的文本-我不断得到一个错误。我有一种感觉,它不喜欢我添加的“\”甚至“$”,但看不出有什么不对-任何帮助都将不胜感激。我想做的就是将一些文本替换为其他文本 PS C:\> $f = "C:\LocalGAR\WIN\Comp\register\x86_v1.0" PS C:\> $f -replace ('C:\LocalGAR','\\comp.gci.tk.com\files$') The regular expression p

我一直在尝试各种组合,但我就是无法替换下面我想要的文本-我不断得到一个错误。我有一种感觉,它不喜欢我添加的“\”甚至“$”,但看不出有什么不对-任何帮助都将不胜感激。我想做的就是将一些文本替换为其他文本

PS C:\> $f = "C:\LocalGAR\WIN\Comp\register\x86_v1.0"

PS C:\> $f -replace ('C:\LocalGAR','\\comp.gci.tk.com\files$')
The regular expression pattern C:\LocalGAR is not valid.
At line:1 char:1
+ $f -replace ('C:\LocalGAR','\\comp.gci.tk.com\files$')
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (C:\LocalGAR:String) [], RuntimeException
    + FullyQualifiedErrorId : InvalidRegularExpression

您是否尝试过像这样调用“replace”方法:

$f.replace('C:\LocalGAR','\\comp.gci.tk.com\files$')
这不会给我一个错误,就像你的台词一样。 编辑(来自Mathias R.Jessen):
是的,值得注意的是,
“-replace”
”完全不同。replace“

您是否尝试过这样调用“replace”方法:

$f.replace('C:\LocalGAR','\\comp.gci.tk.com\files$')
这不会给我一个错误,就像你的台词一样。 编辑(来自Mathias R.Jessen):
是的,值得注意的是,
“-replace”
”完全不同。replace“

您必须避开搜索模式中的斜杠

手动转义

$f -replace ('C:\\LocalGAR','\\comp.gci.tk.com\files$')
或者更安全的自动转义字符串

$f -replace ([Regex]::Escape('C:\LocalGAR'),'\\comp.gci.tk.com\files$')
返回

\\comp.gci.tk.com\files$\WIN\Comp\register\x86_v1.0

您必须避开搜索模式中的斜杠

手动转义

$f -replace ('C:\\LocalGAR','\\comp.gci.tk.com\files$')
或者更安全的自动转义字符串

$f -replace ([Regex]::Escape('C:\LocalGAR'),'\\comp.gci.tk.com\files$')
返回

\\comp.gci.tk.com\files$\WIN\Comp\register\x86_v1.0

PowerShell的
-replace
运算符使用正则表达式进行模式匹配,并使用反斜杠
\
标识正则表达式组,例如
\s
是“任何空格字符(空格、制表符)”

它试图将
\L
与a匹配,但找不到它,并抛出错误

-replace
的replace文本是一个普通字符串,而不是正则表达式,因此
$
在这里很好


(其他答案给出的两个选项是使用执行文字字符串替换的
$string.replace()
方法,或者对正则表达式中的特殊字符进行转义,使其不是命令-手动或使用
[regex]::escape()
).

PowerShell的
-replace
运算符使用正则表达式进行模式匹配,并使用反斜杠
\
来标识正则表达式组-例如,
\s
是“任何空白字符(空格、制表符)”

它试图将
\L
与a匹配,但找不到它,并抛出错误

-replace
的replace文本是一个普通字符串,而不是正则表达式,因此
$
在这里很好


(其他答案中给出的两个选项是使用执行文字字符串替换的
$string.replace()
方法,或者对正则表达式中的特殊字符进行转义,使其不是命令(手动或使用
[regex]::escape()
)。

只是为了澄清一下-
.replace()
-replace
不一样必须清楚-
.replace()
-replace
不一样