我执行了以下ps命令,结果显示出奇怪的结果:"version: 1.0.0.0, count: 1200000" -replace "1.0.0.0", "1.1.0.0"
结果是:
version: 1.1.0.0, count: 1.1.0.0
为什么字符串“1200000”被替换?
PS版本:
Name Value
---- -----
PSVersion 5.1.16299.98
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.16299.98
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
最佳答案
您需要转义.
字符,因为这意味着正则表达式中的任何字符(换行符除外):
"version: 1.0.0.0, count: 1200000" -replace "1\.\0\.0\.0", "1.1.0.0"
由于
'1.0.0.0'
是正则表达式中"1200000"
的完全匹配另请:https://www.regular-expressions.info/dot.html
另一种选择是使用Regex.Escape方法
例如:
$EscapeString = [regex]::Escape("1.0.0.0")
"version: 1.0.0.0, count: 1200000" -replace $EscapeString, "1.1.0.0"