我有一个文本文件,我想使用正则表达式解析它。 如何在“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
如何?
由于
答案 0 :(得分:7)
Entry #
的Splitting会为您提供所需内容。这里没有必要使用正则表达式。只需拆分并删除末尾的空行:
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
}
答案 1 :(得分:1)
虽然我同意@ie的解决方案,但我认为该解决方案会忽略Entry #
之后的数字问题。在这种情况下,Regex.Split将起作用。
string[] matches = Regex.Split(inputStrng, @"Entry #\d+\s+");
foreach (string match in matches)
{
Console.WriteLine(match);
}