从字符串Powershell获取匹配项

时间:2015-01-09 22:22:56

标签: regex parsing 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正在返回整个字符串,但我想要的是$myMatches返回2014-89463(其余的匹配,还有更多)。

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

试试这个:

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

$mystring强制转换为[string]会使其成为一个长字符串,每个元素都有一个空格。然后[regex]::Matches()静态方法返回字符串中找到的所有匹配项。返回的匹配对象将为每个捕获的组分配一个Group对象,.value属性为捕获的值。 foreach循环只迭代所有匹配,并吐出捕获组1的值。