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我想这取决于你认为“重复”是指“来自不同问题的答案也有帮助”(这是真的)还是“这个问题是重复的”(这是假的)。我倾向于认为“复制”是指后者