从字符串 Powershell 中获取匹配项

Get matches from string Powershell

我想收集特定字符串中正则表达式的匹配项,并将它们放入数组中。

到目前为止,这是对我的代码的简化。

$myString = <p>a bunch of html</p> <a href="example.com/number1?ID=2014-89463">go</a>

$myMatches  = $myString -match "\d{4}-\d{5}"
Write-Host $myMatches

$myMatches 是 return 整个字符串,但我想要的是 $myMatches 到 return 作为 2014-89463 (以及其余的任何比赛,还有更多)。

此外,$myString实际上是一个字符串数组,每个都与上面列出的相似。

感谢您的帮助!

试试这个:

[regex]::Matches([string]$mystring,'(\d{4}-\d{5})') |
foreach {$_.groups[1].value}

$mystring 转换为 [string] 使其成为一个长字符串,每个元素之间用 space 分隔。然后 [regex]::Matches() 静态方法 returns 在字符串中找到所有匹配项。返回的匹配对象将为每个捕获的组都有一个组对象,.value 属性 是捕获的值。 foreach 循环只是遍历所有匹配项,并吐出捕获组 1 的值。