如何从Powershell中的单一行捕获多个正则表达式匹配到$matches magic变量?

假设我有字符串“blah blah F12 blah blah F32 blah blah blah”,我想匹配F12和F32,我将如何去捕获Powershell魔术变量$ matches?

如果我在Powershell中运行以下代码:

$string = "blah blah F12 blah blah F32 blah blah blah"
$string -match "F\d\d"

$ matches变量只包含F12

我也试过:

$string -match "(F\d\d)"

这次$ match有两个项目,但都是F12

我想要$ match来包含F12和F32进行进一步处理。我似乎找不到办法。

所有的帮助将不胜感激。 🙂

您可以使用PowerShell 2.0中的Select-String来执行此操作:

Select-String F\d\d -input $string -AllMatches | Foreach {$_.matches}

一会儿我在MS Connect上有asked for a -matchall operator,这个建议是关闭的,这个评论是固定的:

“这是用select-string的-allmatches参数来修复的。”

翻译自:https://stackoverflow.com/questions/3141851/how-to-capture-multiple-regex-matches-from-a-single-line-into-the-matches-mag

转载注明原文:如何从Powershell中的单一行捕获多个正则表达式匹配到$matches magic变量?