Powershell Regex分组从选择字符串



我正在抓取一个web请求响应,以在html代码中重复几次,因此使用选择字符串而不是匹配。我的代码看起来像

$regexname = '(w{0,11}).{1,10}'
$energenie.RawContent | select-string $regexname -AllMatches | % {$_.matches}

返回值看起来像:

Groups : {<h2 class="ener">TV </h2>, TV}
Success : True
Captures : {<h2 class="ener">TV </h2>}
Index : 1822
Length : 33
Value : <h2 class="ener">TV </h2>
Groups : {<h2 class="ener">PS3 </h2>, PS3}
Success : True
Captures : {<h2 class="ener">PS3 </h2>}
Index : 1864
Length : 33
Value : <h2 class="ener">PS3 </h2>

我无法找到一种方法来抓取组的第二个元素,例如TV或PS3:

$energenie.RawContent | select-string $regexname -AllMatches | % {$_.matches.groups}

给出一个奇怪的输出

保罗

应该可以:

energenie美元。RawContent | select-string $regexname -AllMatches | ForEach-Object {Write-Host $_.Matches.Groups[1]。值}

要获取集合中的第二项,使用数组索引操作符:[n],其中n是您想要获取值的索引。

对于Matches中的每个条目,您希望Groups属性中的第二个条目是:

$MyMatches = $energenie.RawContent | select-string $regexname -AllMatches | % {$_.Matches}
$SecondGroups = $MyMatches | % {$_.Groups[1]}
要获取捕获的值,使用Value属性:
$MyMatches | % { $_.Groups[1].Value }

相关内容

  • 没有找到相关文章

最新更新