2013-02-04 85 views
0

我不確定我是否以正確的方式提問或使用正確的符號,但這是我想要做的。如何獲取對象數組並從這些對象中提取數據以構建新數組?

我做

$matches=$_|Select-String '(?smi)(\d*)\: (.*?)' -AllMatches | Foreach{$_.Matches} 

Select-String會返回一個類型[MatchInfo]和的foreach吸出該類型是輸入[的System.Array]

的$匹配的匹配特性是找到每個匹配的[System.Text.RegularExpressions.Group]元素的數組,但我想要的是捕獲組值結果的二維數組。

也就是說,我想包含這樣的元素的數組:

$whatiwant= 
    ($matches[0].Groups[1].Value,$matches[0].Groups[2].Value), 
    ($matches[1].Groups[1].Value,$matches[1].Groups[2].Value), 
    ($matches[2].Groups[1].Value,$matches[2].Groups[2].Value), 
    ($matches[3].Groups[1].Value,$matches[3].Groups[2].Value), 
    ... 

如何建立這個數組?

謝謝。

回答

0

這是我發現要做的一種方法。我不知道是否有更好的方法。

$whatiwant=Foreach($_ in $matches) {,@($_.Groups[1].Value, $_.Groups[2].Value)}