• 正则表达式匹配txt中的特定字符串


        最近由于工作需要,学习了一些关于正则表达式方面的知识,主要是关于如何用C#去log文件中(txt格式)搜索匹配想要的信息,在这里把自己写的一些东西记录一下。我主要是要匹配log中包含的一些信息:

    BEGIN RUN:  7/12/2011, 12:56:58 PM

       ... ...

             Passed Tests:          7
             Failed Tests:          2
      ... ...

             Ignored Verifications: 0
             Total Execution Time:  9m 11s

      ... ...

    具体方法如下:

     public static void GetInfo(string logPath,out String[] value) //logpath是存放log的路径, value是获取到相应的字符串后将其输出
            {
                value=new string[5]; //我需要匹配搜索的字符串有5个
                using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))  //打开log文件
                {
                    using (StreamReader sr = new StreamReader(fs))
                    {
                        string[] lineArray = sr.ReadToEnd().Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); //存储log一共有多少行

                        // Define regex to search info from .log
                        Regex rx1 = new Regex(@".?(\d{1,2}/\d{1,2}/\d{4}, \d{1,2}:\d{1,2}:\d{1,2} \wM)", RegexOptions.IgnoreCase); //为了搜索匹配BEGIN RUN: 7/12/2011, 12:56:58 PM 这个字符串中的时间7/12/2011, 12:56:58 PM
                        Regex rx2 = new Regex(@"Passed Tests:\s+\d{1,3}", RegexOptions.IgnoreCase); //为了搜索匹配Passed Tests: 7这个字符串中的数字
                        Regex rx3 = new Regex(@"Failed Tests:\s+\d{1,3}", RegexOptions.IgnoreCase); //为了搜索匹配 Failed Tests: 2这个字符串中的数字
                        Regex rx4 = new Regex(@"Ignored Verifications:\s+\d{1,3}", RegexOptions.IgnoreCase); //为了搜索匹配 Ignored Verifications: 0这个字符串中的数字
                        Regex rx5 = new Regex(@"Total Execution Time:\s+\d{1,2}m+ \d{1,2}s|Total Execution Time:\s+\d{1,2}m", RegexOptions.IgnoreCase); //为了搜索匹配 Total Execution Time: 9m 11s这个字符串中的时间

                        foreach (string line in lineArray) //逐行进行遍历
                        {
                            if (rx1.Match(line).Success) //如果找到符合rx1条件的字符串
                            {
                                val[0] = rx1.Match(line).Value; //把字符串的值赋给value

                            }
                            if (rx2.Match(line).Success)
                            {
                                val[1] = rx2.Match(line).Value.Substring(17); //从第一个字母p开始算起7的index是17(包括了空格)
                            }
                            if (rx3.Match(line).Success)
                            {
                                val[2] = rx3.Match(line).Value.Substring(17);
                            }
                            if (rx4.Match(line).Success)
                            {
                                val[3] = rx4.Match(line).Value.Substring(23);
                            }
                            if (rx5.Match(line).Success)
                            {
                                val[4] = rx5.Match(line).Value.Substring(23);
                            }                   
                        }
                    }
                }
            }

    由于很多文章都只介绍了一些常用的正则,像邮编,电话之类的,所以在这里把我自己遇到的一个具体的例子记录下,怎么去做全文匹配,查找字符串,传值,供自己学习用。

  • 相关阅读:
    HasMap
    SQL Server 2005新特性之使用with关键字解决递归父子关系
    Silverlight4调用本地音频设备并将音频文件上传到服务器
    sql中exists,not exists的用法
    ie中jQuery无法解析xml文件的解决方案
    NeatUpload的安装使用
    C# 中 MSCHART 饼状图显示百分比
    JSON
    silverlight 独立存储
    SharePoint2010 自定义搜索
  • 原文地址:https://www.cnblogs.com/halia/p/2143363.html
Copyright © 2020-2023  润新知