替换PowerShell中的数字不起作用

时间:2017-10-26 15:03:25

标签: regex powershell

修改:虽然上面的问题是相关的,但问题与询问.replace-replace之间的差异并不相同,也没有相同的答案

根据Powershell docs

  

\d匹配任何数字字符。

我有一个命令(gggit grep的别名),它提供输出:

packages/somemodule/index.js:69:                 log(`woo`)

我熟悉正则表达式,并希望将输出更改为:

packages/somemodule/index.js:69                  log(`woo`)

即。在第一个数字和冒号之后添加一个空格(如果您感兴趣,这是为了使文件可由编辑器打开)。但是一位数,一次或多次,后跟冒号 \d+:不起作用:

gg 'No previous' | % {$_.replace("\d+:",'xxxx')}

尝试使用不同版本时,the \d不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:2)

命令输出被视为字符串数据。在您的代码中,您调用的[String].Replace()方法不支持正则表达式。为了使其按预期工作,您需要使用PowerShell的-replace运算符。

gg 'No previous' | % { $_ -replace '\d+:','xxxx' }

这种方法将允许PowerShell使用正则表达式替换字符串!