为什么-replace没有按预期工作?

Eug*_*u N 2 powershell replace

在PowerShell中我有代码

";10000;100;.0000" -replace ";.0000",";0.00"
Run Code Online (Sandbox Code Playgroud)

结果是: ";0.00;100;0.00"

怎么可能?

Mat*_*att 5

-replace使用正则表达式.因此,您正在寻找;.0000具有.匹配任何字符的正则表达式特殊字符的内容.这就是为什么一开始就有一场比赛.

如果你逃离那个时期,它会被字面上处理,你会得到预期的结果.

PS C:\Users\Matt> ";10000;100;.0000" -replace ";.0000",";0.00"
;0.00;100;0.00

PS C:\Users\Matt> ";10000;100;.0000" -replace ";\.0000",";0.00"
;10000;100;0.00
Run Code Online (Sandbox Code Playgroud)

您可以在regex101上查看更多解释来查看示例.

; 匹配角色; 按照字面

.匹配任何字符(换行符除外)

0000字面匹配字符0000

以上内容取自链接资源.

所以你要么需要注意正则表达式控制字符(这不是一件难以进入的事情),或者如果你只是在进行基本的搜索/替换,你也可以使用不使用正则表达式的.Replace()字符串方法.

PS C:\Users\Matt> ";10000;100;.0000".replace(";.0000",";0.00")
;10000;100;0.00
Run Code Online (Sandbox Code Playgroud)