【问题标题】:Get matches from string Powershell从字符串 Powershell 获取匹配项
【发布时间】:2015-01-09 22:22:56
【问题描述】:

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

这是迄今为止我的代码的简化。

$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 实际上是一个字符串数组,每个字符串都与上面列出的相似。

感谢您的帮助!

【问题讨论】:

    标签: regex parsing powershell


    【解决方案1】:

    试试这个:

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

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

    【讨论】:

    • 它似乎奏效了。你能解释一下为什么会这样吗?我是 Powershell 新手。
    • 将 $mystring 转换为 [string] 使其成为一个长字符串,每个元素之间用空格分隔。然后 [regex]::Matches 静态方法返回在字符串中找到的所有匹配项。返回的匹配对象将为每个捕获的组提供一个 Group 对象,其中 .value 属性是捕获的值。 foreach 只是遍历所有匹配项,并吐出捕获组 1 的值。
    猜你喜欢
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 2015-10-14
    • 2022-10-17
    • 2011-10-31
    • 2019-04-08
    相关资源
    最近更新 更多