Powershell捕获多个值?

时间:2019-01-03 17:49:38

标签: regex powershell

以下代码仅返回一个匹配项。

$s = 'x.a,
x.b,
x.c
'
$s -match 'x\.(.*?)[,$]'
$Matches.Count # return 2
$Matches[1] # returns a only

除返回a, b, c之外。

1 个答案:

答案 0 :(得分:1)

-match运算符仅找到第一个匹配项。与-AllMatches一起使用的Select-String将获取输入中的所有匹配项。另外,[,$]匹配,$文字字符,$不是字符串/行末元字符。

可能的解决方案看起来像

 Select-String 'x\.([^,]+)' -input $s -AllMatches | Foreach {$_.Matches} | Foreach-Object {$_.Groups[1].Value}

模式为x\.([^,]+),它与x.匹配,然后将,以外的任何一个或多个字符捕获到组1中。