在正则表达式上进行数学运算替换匹配变量(%1)

时间:2016-07-05 21:59:41

标签: regex powershell

我的csv文件包含百分比值 百分号(yuck)。我想拉出%&并且将值乘以0.01,这样我就可以将它存储为正确的小数。

起初我以为我将其拆分并分两步完成:

  • 删除%'
  • 对剩余值进行数学计算

但那不必要的复杂,对吧?这让我在开始时没有百分比值的情况下遇到麻烦,但在删除%&#39之后看起来就像它们一样(开始像正则表达式一样思考)。我确定可以在一个正则表达式替换中执行此操作。

我困惑了一个正则表达式来找到这些值,但是现在我试图用我的替换价值做数学运算并且我在使用$ 1时遇到了麻烦。我似乎无法将它乘以0.01。我尝试了一堆括号和[十进制]声明,但无法使它工作。

现有文件的示例:

1.9500%, 123.23, 0.0123%, "textvalue", 2.1450%, 2.89

所需文件的示例(删除百分号并完成数学运算)。为清晰起见,包含了前导/尾随零,但我在技术上并不需要它们:

0.019500, 123.23, 0.000123, "textvalue", 0.021450, 2.89

这是我的代码:

$Files = Get-ChildItem *input.csv
foreach ($file in $Files)
    {
        $file |
        Get-Content | #assume that I can't use -raw
        % {$_ -replace '(\d+\.\d+)%', ("`$1" * 0.01)} | #THIS is my problem
        out-file output.csv -append -encoding ascii
    }

0 个答案:

没有答案