0

この質問を正しい方法で行っているのか、正しい表記法を使用しているのかさえわかりませんが、これが私がやりたいことです。

終わったよ

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

Select-String は型 [MatchInfo] を返し、Foreach は型 [System.Array] であるその型の Matches プロパティを吸い出します。

$matches は、見つかった各一致の [System.Text.RegularExpressions.Group] 要素の配列ですが、私が欲しいのは、キャプチャ グループ値の結果の 2 次元配列です。

つまり、次のような要素を含む配列が必要です。

$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),
   ...

この配列を構築するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

0

私はこれを使用します: http://gallery.technet.microsoft.com/scriptcenter/New-PSObjectFromMatches-87d8ce87

正規表現の引数を取り、入力の一致グループからカスタム PS オブジェクトを生成します。

于 2013-02-04T17:33:46.830 に答える
0

これが私が発見した1つの方法です。より良い方法があるかどうかはわかりません。

$whatiwant=Foreach($_ in $matches) {,@($_.Groups[1].Value, $_.Groups[2].Value)}
于 2013-02-04T03:37:30.503 に答える