2

テキスト ファイルがあり、正規表現を使用して解析したいと考えています。"Entry #" の間のテキスト ブロックを、次の "Entry #" の前の空の行に抽出するにはどうすればよいですか?

GmtOffset=120
GmtExistFlag=0
LocalTimeFlag=0
Entry #1
EventType=1
FieldType=256
FieldValue=12-05-2010, 11:00:00
FieldType=512
FieldValue=12-05-2010, 11:30:00
FieldType=1
FieldValue(3)=Jku

Entry #2
EventType=1
FieldType=256
FieldValue=15-05-2010, 06:00:00
FieldType=512
FieldValue=15-05-2010, 06:30:00
FieldType=1
FieldValue(3)=Lsh
FieldType=1024
FieldValue=15-05-2010, 05:45:00
FieldType=65536
FieldValue=1

Entry #3
EventType=4
FieldType=1
FieldValue(4)=STYL
FieldType=1024
FieldValue=13-05-2010, 11:00:00
FieldType=65536
FieldValue=1
FieldType=2097152
FieldValue=2
FieldType=8388608
FieldValue=-2147483648

方法 ?

ありがとう

4

2 に答える 2

7

で分割するEntry #と、必要なものが得られます。ここでは正規表現は必要ありません。最後に空行を分割して削除するだけです:

var blocks = text.Split("Entry #");
foreach (var block in blocks)
{
    // removing the line with the entry number
    block = block.Substring(block.IndexOf(Environment.NewLine));

    // removing the empty lines
    block = block.Trim('\n', '\r');

    // add your processing here
}
于 2012-06-19T12:21:35.513 に答える
1

@ieによる解決策には同意しますが、解決策は。に続く数の問題を見落とすと思いますEntry #。その場合、Regex.Splitは機能します。

string[]  matches = Regex.Split(inputStrng, @"Entry #\d+\s+");
foreach (string match in matches)
{     
    Console.WriteLine(match);
}
于 2012-06-19T12:51:42.753 に答える