什么';powershell中.replace和-replace的区别是什么?

什么';powershell中.replace和-replace的区别是什么?,powershell,methods,replace,Powershell,Methods,Replace,我的印象是.replace和-replace是完全一样的,但是我发现我不能用.replace完成一些正则表达式任务,我可以用-replace。有人能指出我遗漏了什么吗 Broken Regex replace: $a=$a.Replace('.:\\LOGROOT\\', "\\$env:computername\logroot\") Working Regex replace: $a=$a -Replace('.:\\LOGROOT\\', "\\$env:computername\log

我的印象是.replace和-replace是完全一样的,但是我发现我不能用.replace完成一些正则表达式任务,我可以用-replace。有人能指出我遗漏了什么吗

Broken Regex replace:
$a=$a.Replace('.:\\LOGROOT\\', "\\$env:computername\logroot\")


Working Regex replace:
$a=$a -Replace('.:\\LOGROOT\\', "\\$env:computername\logroot\")
附言: 下面的URL让我觉得有。替换选项我不熟悉,但我似乎找不到关于如何使用它们或如何访问这些选项的帮助的任何其他信息。 Regex.Replace(String,String,String,RegexOptions)以及: Replace(String,String,MatchEvaluator,RegexOptions)方法


谢谢

它们不是一回事
.Replace
是System.String或任何其他类型上的.NET方法,其实例方法名为
Replace
-replace
是一个使用正则表达式的PowerShell运算符。运行
man about_操作符
查看有关
-replace
操作符的更多信息。

而@Keith Hill的回答解释了
replace
方法和
-replace
操作符之间的区别,解释了为什么您可能看不到相同的结果,这是因为您使用的是执行字符串替换的
String.Replace
方法,
-Replace
运算符使用regex Replace。您可以为此目的使用该方法,并且您应该看到相同的效果:

[regex]::replace($a,'.:\\LOGROOT\\', "\\$env:computername\logroot\")

简言之,
-replace
运算符与
Regex.replace
(上面链接的特定重载)相同,但通常是
replace()
可以是实例或静态方法,可以做任何与
-replace

完全不同的事情。我认为
-replace
是一个操作符,而
.replace
是一个方法(在
$a
上)。实际上,更具体地说
a-replace b,c
是.NET方法。