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
不一样