我正在抓取一个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 }