1

名前付きグループを添付したい。

ソーステキスト:

1/2/3/4/5|id1:value1|id2:value2|id3:value3|1/4/2/7/7|id11:value11|id12:value12|

Group1:
1/2/3/4/5|id1:value1|id2:value2|id3:value3|
Sub groups:
id1:value1|
id2:value2|
id3:value3|

Group2:
1/4/2/7/7|id11:value11|id12:value12|
Sub groups:
id11:value11|
id12:value12|

どうすればこれを行うことができますか?

4

1 に答える 1

0

このタスクは分割による複雑さがなくても十分に簡単ですが、.Net 正規表現の一致は、 Group.Capturesコレクションを使用して、(私が知っている他のフレーバーとは異なり) すべてのグループのすべてのキャプチャの記録を保持します。

マッチ:

string pattern = @"(?<Header>\d(?:/\d)*\|)(?<Pair>\w+:\w+\|)+";
MatchCollection matches = Regex.Matches(str, pattern);

使用する:

foreach (Match match in matches)
{
    Console.WriteLine(match.Value); // whole match ("Group1/2" in the question)
    Console.WriteLine(match.Groups["Header"].Value);
    foreach (Capture pair in match.Groups["Pair"].Captures)
    {
        Console.WriteLine(pair.Value); // "Sub groups" in the question
    }
}

作業例: http://ideone.com/5kbIQ

于 2011-05-07T18:36:23.087 に答える