在PowerShell中,我发现自己在这样的事情上一遍又一遍地进行了比赛:
some-command | select-string '^(//[^#]*)' | %{some-other-command $_.matches[0].groups[1].value}
所以基本上运行一个生成文本行的命令,对于每行,我想在行内的正则表达式捕获(如果匹配)上运行一个命令。似乎很简单上面的工作,但是有更短的方法来拉出正则表达式捕获组? Perl有1美元等等,如果我记得对了。宝马必须有类似的东西,对吗?我在SO上看过“$ matches”引用,但无法弄明白什么是设置。
我刚刚开始学习PowerShell btw。
您可以使用-match运算符将命令重新格式化为:
some-command | Foreach-Object { if($_ -match '^(//[^#]*)') { some-other-command $($matches[1])}}