mr.*_*ons 21 methods powershell replace
我的印象是.replace和-replace是完全相同的东西,但是我发现我无法使用.replace完成一些RegEx任务,我可以使用-replace.有人可以指出我错过了什么吗?
Broken Regex replace:
$a=$a.Replace('.:\\LOGROOT\\', "\\$env:computername\logroot\")
Working Regex replace:
$a=$a -Replace('.:\\LOGROOT\\', "\\$env:computername\logroot\")
Run Code Online (Sandbox Code Playgroud)
ps:以下网址让我觉得我不熟悉.replace选项,但我似乎无法找到有关如何使用它们的任何其他信息,或者如何访问这些选项的帮助.http://www.computerperformance.co.uk/powershell/powershell_regex.htm Regex.Replace(String,String,String,RegexOptions)以及:Regex.Replace(String,String,MatchEvaluator,RegexOptions)方法.
谢谢
man*_*lds 19
虽然@Keith Hill的答案解释了Replace方法和-replace运算符之间的区别,但为了解释为什么你可能看不到相同的结果,这是因为你正在使用String.Replace字符串替换的方法,而-replace运算符使用正则表达式替换.您可以使用Regex.Replace方法来实现此目的,您应该看到相同的效果:
[regex]::replace($a,'.:\\LOGROOT\\', "\\$env:computername\logroot\")
Run Code Online (Sandbox Code Playgroud)
简而言之,-replace运算符与Regex.Replace(上面链接的特定重载)相同,但通常Replace()可以是实例或静态方法,可以做任何完全不同于-replace
Kei*_*ill 16
它们不是同一件事..Replace是System.String上的.NET方法或具有名为的实例方法的任何其他类型Replace. -replace是一个使用正则表达式的PowerShell运算符.运行man about_operators以查看有关-replace操作员的更多信息.