替换文本失败

时间:2016-06-21 15:16:11

标签: 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 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

3 个答案:

答案 0 :(得分:2)

您是否尝试过调用'替换'像这样的方法:

$f.replace('C:\LocalGAR','\\comp.gci.tk.com\files$')

这不会给你的线路造成错误。 编辑(来自Mathias R. Jessen): 是的,还可以注意到"-replace"".replace"

完全不同

答案 1 :(得分:2)

您必须在搜索模式中转义斜杠

手动转义

$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

答案 2 :(得分:1)

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

它正在尝试将\Lregular expression command匹配,但找不到它,并且正在抛出错误。

-replace的替换文字是普通字符串,而不是正则表达式,因此$就可以了。

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

相关问题