Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Regex从日志文件中提取数据_C#_.net_Regex - Fatal编程技术网

C# 使用Regex从日志文件中提取数据

C# 使用Regex从日志文件中提取数据,c#,.net,regex,C#,.net,Regex,我有以下日志文件 10:12:28.571 INFO INFO McEvent (ExitWaitPostProcess) Stage: 2 10:12:28.571 INFO McReplay:StatusEvent: 0C0000004576656E74496E666F207631260000000A000000484C4D494E464F207631C0A80A0100007F0000010000010100000000000100000046658FDC50080000

我有以下日志文件

    10:12:28.571 INFO INFO McEvent (ExitWaitPostProcess) Stage: 2 
    10:12:28.571 INFO McReplay:StatusEvent: 0C0000004576656E74496E666F207631260000000A000000484C4D494E464F207631C0A80A0100007F0000010000010100000000000100000046658FDC5008000000303331333030303115000000
    5761697420666F7220706F73742070726F636573735E00000045786974205761697420666F7220706F73742070726F63657373205374616765204E6F322C20592D617869732846726F6E742053696465292C202852656172204C616E65292C205043422049443A20202020202020202020202020202020
    10:12:28.571 INFO McReplay:StatusEvent verbose: event:03130001, msg:'Wait for post process',  submsg:'Exit Wait for post process Stage No2, Y-axis(Front Side), (Rear Lane),  ID:                '
    10:12:28.571 INFO INFO McEvent (ExitWaitPostProcess) Stage: 2 
我的正则表达式应该是什么样子,才能提取McReplay之后的内容,直到以时间戳开头的第一行

我想到了类似的事情

               new Regex(@"^(\d\d:\d\d:\d\d\.\d\d\d) INFO McReplay:(.*?)(\d\d:\d\d:\d\d\.\d\d\d)",
                           RegexOptions.Singleline | RegexOptions.Multiline);
似乎我对该部分有问题
(.*)(\d\d:\d\d:\d\d\.\d\d)


我应该在这里修复什么?

这将查找所有出现的问题

     List<string> results = new List<string>();
     MatchCollection mc = Regex.Matches("yourstring", "McReplay:(.+?)[0-9]{2}:[0-9]{2}:[0-9]{2}", RegexOptions.Singleline);
     foreach (Match item in mc)
     {
        results.Add(item.Result("$1"));
     }
列表结果=新列表();
MatchCollection mc=Regex.Matches(“yourstring”,“McReplay:(.+?)[0-9]{2}:[0-9]{2}:[0-9]{2}”,RegexOptions.Singleline);
foreach(匹配mc中的项目)
{
结果。添加(项目结果($1”);
}

更简单的方法不是使用System.IO方法读取文件的每一行,然后执行一个简单的字符串。子字符串(String.IndexOf(“McReplay”)?@prthrokz,McReplay可以在几行上,如我的小例子所示,我不想进行复杂的字符串比较logic@Blam不需要这样做,因为我在正则表达式中不使用^或$