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

时间:2015-05-28 03:30:24

标签: powershell replace

在PowerShell中我有代码

select
  d.[date],
  (
    sum(x.[count]) 
    from yourtable x 
    where x.[time] >= d.[date] 
    and x.[time] < dateadd(hour, 36, d.[date])
  ) as [count]
from
  dates d

,结果是:";10000;100;.0000" -replace ";.0000",";0.00"

这怎么可能?

1 个答案:

答案 0 :(得分:5)

backgroundColor使用正则表达式。因此,您正在寻找具有与任何字符相匹配的正则表达式特殊字符-replace的{​​{1}}。这就是为什么一开始就有一场比赛。

如果你逃离那个时期,它会被字面上对待,你会得到预期的结果。

;.0000

您可以在regex101处查看更多解释来查看您的示例。

  

匹配角色;字面上

     

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

     <00> 0000字面匹配字符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