我想将匹配项收集到特定字符串中的正则表达式中,然后将它们放入数组中。
到目前为止,这是对我的代码的简化。
$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
实际上是一个字符串数组,每个字符串都与上面列出的相似。
感谢您的帮助!
答案 0 :(得分:2)
试试这个:
[regex]::Matches([string]$mystring,'(\d{4}-\d{5})') |
foreach {$_.groups[1].value}
将$mystring
强制转换为[string]
会使其成为一个长字符串,每个元素都有一个空格。然后[regex]::Matches()
静态方法返回字符串中找到的所有匹配项。返回的匹配对象将为每个捕获的组分配一个Group对象,.value
属性为捕获的值。 foreach
循环只迭代所有匹配,并吐出捕获组1的值。