Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 替换PowerShell中的数字不会';行不通_Regex_Powershell - Fatal编程技术网

Regex 替换PowerShell中的数字不会';行不通

Regex 替换PowerShell中的数字不会';行不通,regex,powershell,Regex,Powershell,编辑:尽管上面的问题是相关的,但这与问.replace和-replace之间的区别不同,也没有相同的答案 根据 \d匹配任何数字字符 我有一个命令(gg,git grep的别名),它给出了以下输出: packages/somemodule/index.js:69: log(`woo`) 我熟悉regexs,希望将输出更改为: packages/somemodule/index.js:69 log(`woo`) 例如,在第一个数

编辑:尽管上面的问题是相关的,但这与问
.replace
-replace
之间的区别不同,也没有相同的答案

根据

\d
匹配任何数字字符

我有一个命令(
gg
,git grep的别名),它给出了以下输出:

packages/somemodule/index.js:69:                 log(`woo`)
我熟悉regexs,希望将输出更改为:

packages/somemodule/index.js:69                  log(`woo`)
例如,在第一个数字和冒号后添加空格(如果您感兴趣,这是为了使文件可由编辑器打开)。但是,一个数字,一次或多次,后跟一个冒号,
\d+:
不起作用:

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

尝试不同的版本是行不通的。我做错了什么?

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

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

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

'packages/somemodule/index.js:69:log(`woo`)'-replace':(\d+):,':$1'
是的,我最后使用了
gg'No previous'|%{$.-replace'(\d+),'$1'}
这个问题源于对replace和-replace之间区别的误解。是的,这不是你问的确切问题,但这里和那里的答案都来源于同一个问题。重复是好的,这不会伤害任何东西。@matt我想这取决于你认为“重复”是指“来自不同问题的答案也有帮助”(这是真的)还是“这个问题是重复的”(这是假的)。我倾向于认为“复制”是指后者