• 正则表达式的应用1


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.IO;

    namespace ConsoleApplication1
    {

        public class Rule
        {
            public string Key { get; set; }
            public string Name { get; set; }
            public string Text { get; set; }
        }

     
        class Program
        {
            static void Main(string[] args)
            {


                List<Rule> rules = new List<Rule>();
                rules.Add(new Rule { Key = "001", Name = "设备告警流水号", Text = @"[\s\n]*设备告警流水号[\s]*=[\s]*(?<deviecCode>\d{1,})" });
                rules.Add(new Rule { Key = "002", Name = "网络流水号", Text = @"[\s\n]*网络流水号[\s]*=[\s]*(?<SiteCode>\d{1,})" });
                rules.Add(new Rule { Key = "003", Name = "对象标识", Text = @"[\s\n]*对象标识[\s]*=[\s]*(?<ObjectFlag>[\.\d]{1,})" });
                rules.Add(new Rule { Key = "004", Name = "对象名称", Text = @"[\s\n]*对象名称[\s]*=[\s]*(?<ObjectName>[A-z0-9\-\[\]\u4e00-\u9fa5]{1,})" });
                rules.Add(new Rule { Key = "005", Name = "对象类型", Text = @"[\s\n]*对象类型[\s]*=[\s]*(?<ObjectType>\w+)" });
                rules.Add(new Rule { Key = "006", Name = "网元标识", Text = @"[\s\n]*网元标识[\s]*=[\s]*(?<SiteElementFlag>[\.\d]{1,})" });
                rules.Add(new Rule { Key = "007", Name = "网元名称", Text = @"[\s\n]*网元名称[\s]*=[\s]*(?<SiteElementName>\w+)" });
                rules.Add(new Rule { Key = "008", Name = "网元类型", Text = @"[\s\n]*网元类型[\s]*=[\s]*(?<SiteElementType>\w+)" });
                rules.Add(new Rule { Key = "009", Name = "告警ID", Text = @"[\s\n]*告警ID[\s]*=[\s]*(?<alarmId>\w+)" });
                rules.Add(new Rule { Key = "010", Name = "告警名称", Text = @"[\s\n]*告警名称[\s]*=[\s]*(?<alarmName>[A-z0-9\-\[\]\u4e00-\u9fa5]{1,})" });
                rules.Add(new Rule { Key = "011", Name = "告警种类", Text = @"[\s\n]*告警种类[\s]*=[\s]*(?<alarmItem>[A-z0-9\-\[\]\u4e00-\u9fa5]{1,})" });
                rules.Add(new Rule { Key = "012", Name = "告警级别", Text = @"[\s\n]*告警级别[\s]*=[\s]*(?<alarmLevel>[A-z0-9\-\[\]\u4e00-\u9fa5]{1,})" });
                rules.Add(new Rule { Key = "013", Name = "告警状态", Text = @"[\s\n]*告警状态[\s]*=[\s]*(?<alarmStatus>([A-z0-9\-\[\]\u4e00-\u9fa5]{1,})[\s]*&[\s]*([\u4e00-\u9fa5]){1,})" });
                rules.Add(new Rule { Key = "014", Name = "告警类型", Text = @"[\s\n]*告警类型[\s]*=[\s]*(?<alarmType>[A-z0-9\-\[\]\u4e00-\u9fa5]{1,})" });
                rules.Add(new Rule { Key = "015", Name = "发生时间", Text = @"[\s\n]*发生时间[\s]*=[\s]*(?<alarmTime>[0-9:\-\s]{1,})" });
                rules.Add(new Rule { Key = "017", Name = "操作员", Text = @"[\s\n]*操作员[\s]*=[\s]*(?<oper>[A-z0-9\-\[\]\u4e00-\u9fa5]{1,})" });

                List<string> datas = new List<string>();

                string sr = @"(?<content><\+\+\+>{0}"
                    //+ @"[\s\n]*设备告警流水号[\s]*=[\s]*(?<deviecCode>\d{1,})"
                    //+ @"[\s\n]*网络流水号[\s]*=[\s]*(?<SiteCode>\d{1,})"
                    //+ @"[\s\n]*对象标识[\s]*=[\s]*(?<ObjectFlag>[\.\d]{1,})"
                    //+ @"[\s\n]*对象名称[\s]*=[\s]*(?<ObjectName>[A-z0-9\-\[\]\u4e00-\u9fa5]{1,})"
                    //+ @"[\s\n]*对象类型[\s]*=[\s]*(?<ObjectType>\w+)"
                    //+ @"[\s\n]*网元标识[\s]*=[\s]*(?<SiteElementFlag>[\.\d]{1,})"
                    //+ @"[\s\n]*网元名称[\s]*=[\s]*(?<SiteElementName>\w+)"
                    //+ @"[\s\n]*网元类型[\s]*=[\s]*(?<SiteElementType>\w+)"
                    //+ @"[\s\n]*告警ID[\s]*=[\s]*(?<alarmId>\w+)"
                    //+ @"[\s\n]*告警名称[\s]*=[\s]*(?<alarmName>[A-z0-9\-\[\]\u4e00-\u9fa5]{1,})"
                    //+ @"[\s\n]*告警种类[\s]*=[\s]*(?<alarmItem>[A-z0-9\-\[\]\u4e00-\u9fa5]{1,})"
                    //+ @"[\s\n]*告警级别[\s]*=[\s]*(?<alarmLevel>[A-z0-9\-\[\]\u4e00-\u9fa5]{1,})"
                    //+ @"[\s\n]*告警状态[\s]*=[\s]*(?<alarmStatus>([A-z0-9\-\[\]\u4e00-\u9fa5]{1,})[\s]*&[\s]*([\u4e00-\u9fa5]){1,})"
                    //+ @"[\s\n]*告警类型[\s]*=[\s]*(?<alarmType>[A-z0-9\-\[\]\u4e00-\u9fa5]{1,})"
                    //+ @"[\s\n]*发生时间[\s]*=[\s]*(?<alarmTime>[0-9:\-\s]{1,})"
                    // + @"[\s\n]*定位信息[\s]*=[\s]*(?<infoLocation>[A-z0-9\-\[\]\u4e00-\u9fa5\,\s=]{1,})"
                    //    + @"[\s\n]*操作员[\s]*=[\s]*(?<oper>[A-z0-9\-\[\]\u4e00-\u9fa5]{1,})"
                    + @"[\s\S]*?<\-\-\->)";
                Regex r = null;
               

                string sr0 = sr.Replace("{0}","");
                r = new Regex(sr0);
                List<string> list = new List<string>();
                string s = File.ReadAllText("tt.txt", Encoding.GetEncoding("gb2312"));

                bool isb = s.Contains("对象标识");
                Console.WriteLine(isb);

                MatchCollection m = r.Matches(s);
                for (var i = 0; i < m.Count; i++){
                    datas.Add(m[i].Groups["content"].Value);

                }

                for (int i = 0; i < datas.Count; i++){

                    StringBuilder sb = new StringBuilder();
                    string data = datas[i];
                    foreach (Rule model in rules){

                        bool isHas = data.Contains(model.Name);
                        if (isHas){
                            sb.Append(model.Text);
                        }
                    }
                    string sr2 = string.Format(sr, sb.ToString());
                    r = new Regex(sr2);
                    MatchCollection ms = r.Matches(data);
                    for (int mcount = 0; mcount < ms.Count; mcount++)
                    {
                        Console.WriteLine(ms[mcount].Groups["alarmItem"].Value);

                    }
                }


                for (int i = 0; i < list.Count; i++)
                {
                    Console.WriteLine(list[i]);
                }
                Console.WriteLine(datas.Count);
                Console.Read();

            }
        }
    }

    <+++>
    设备告警流水号  =  43575
    网络流水号  =  122892
    对象标识  =  .3221229568.3221233664.3221291009.3221368833.3221336065.3221340239
    对象名称  =  FSHWBSC8-015-[0197]-大良桂畔
    对象类型  =  BTS
    网元标识  =  .3221229568.3221233664.3221291009
    网元名称  =  FSHWBSC8
    网元类型  =  BSC6000
    告警ID  =  65384
    告警名称  =  防盗告警
    告警种类  =  故障
    告警级别  =  重要
    告警状态  =  未确认 & 未恢复
    告警类型  =  环境系统
    发生时间  =  2008-11-25 11:45:10
    定位信息  =  站点号=12,单板ID=87,单板号=0,通道号=255,支路号=255,小区号=65535,站点类型=18,机架号=0,机框号=0,槽位号=6
    <--->
    <+++>
    告警握手  =  2008-11-25 11:50:10
    <--->
    <+++>
    设备告警流水号  =  43263
    网络流水号  =  120457
    对象标识  =  .3221229568.3221233664.3221291009.3221368833.3221336065.3221340258
    对象名称  =  FSHWBSC8-035-[0111]-大良商业
    对象类型  =  BTS
    网元标识  =  .3221229568.3221233664.3221291009
    网元名称  =  FSHWBSC8
    网元类型  =  BSC6000
    告警ID  =  65384
    告警名称  =  防盗告警
    告警种类  =  故障
    告警级别  =  重要
    告警状态  =  未确认 & 未恢复
    告警类型  =  环境系统
    发生时间  =  2008-11-25 06:55:33
    定位信息  =  站点号=32,单板ID=87,单板号=0,通道号=255,支路号=255,小区号=65535,站点类型=18,机架号=0,机框号=0,槽位号=6
    <--->
    <+++>
    设备告警流水号  =  43263
    网络流水号  =  120457
    对象标识  =  .3221229568.3221233664.3221291009.3221368833.3221336065.3221340258
    对象名称  =  FSHWBSC8-035-[0111]-大良商业
    对象类型  =  BTS
    网元标识  =  .3221229568.3221233664.3221291009
    网元名称  =  FSHWBSC8
    网元类型  =  BSC6000
    告警ID  =  65384
    告警名称  =  防盗告警
    告警种类  =  故障
    告警级别  =  重要
    告警状态  =  已确认 & 已恢复
    告警类型  =  环境系统
    发生时间  =  2008-11-25 06:55:33
    恢复时间  =  2008-11-25 06:55:38
    确认时间  =  2008-11-25 07:00:36
    定位信息  =  站点号=32,单板ID=87,单板号=0,通道号=255,支路号=255,小区号=65535,站点类型=18,机架号=0,机框号=0,槽位号=6
    操作员  =   < 系统 >
    <--->
    <+++>
    设备告警流水号  =  43264
    网络流水号  =  120458
    对象标识  =  .3221229568.3221233664.3221291009.3221368833.3221336065.3221340258
    对象名称  =  FSHWBSC8-035-[0111]-大良商业
    对象类型  =  BTS
    网元标识  =  .3221229568.3221233664.3221291009
    网元名称  =  FSHWBSC8
    网元类型  =  BSC6000
    告警ID  =  65384
    告警名称  =  防盗告警
    告警种类  =  故障
    告警级别  =  重要
    告警状态  =  未确认 & 未恢复
    告警类型  =  环境系统
    发生时间  =  2008-11-25 06:55:57
    定位信息  =  站点号=32,单板ID=87,单板号=0,通道号=255,支路号=255,小区号=65535,站点类型=18,机架号=0,机框号=0,槽位号=6
    <--->
    <+++>
    设备告警流水号  =  43264
    网络流水号  =  120458
    对象标识  =  .3221229568.3221233664.3221291009.3221368833.3221336065.3221340258
    对象名称  =  FSHWBSC8-035-[0111]-大良商业
    对象类型  =  BTS
    网元标识  =  .3221229568.3221233664.3221291009
    网元名称  =  FSHWBSC8
    网元类型  =  BSC6000
    告警ID  =  65384
    告警名称  =  防盗告警
    告警种类  =  故障
    告警级别  =  重要
    告警状态  =  已确认 & 已恢复
    告警类型  =  环境系统
    发生时间  =  2008-11-25 06:55:57
    恢复时间  =  2008-11-25 06:56:03
    确认时间  =  2008-11-25 07:01:01
    定位信息  =  站点号=32,单板ID=87,单板号=0,通道号=255,支路号=255,小区号=65535,站点类型=18,机架号=0,机框号=0,槽位号=6
    操作员  =   < 系统 >
    <--->

  • 相关阅读:
    ArcGIS JS API多线程克里金插值
    PostGIS计算矢量切片(一)--渲染数据
    Arcpy多线程热力图
    Puppeteer之大屏批量截图
    Echarts 南海诸岛简图显示位置调整
    Echarts地图使用经验-地图变形和添加数据
    springboot的拦截器Interceptor的性质
    Centos7 网络报错Job for iptables.service failed because the control process exited with error code.
    记录一次Service被注入mapper实例的错误
    java中通过Adb判断PC是否连接了移动设备
  • 原文地址:https://www.cnblogs.com/luluping/p/1626045.html
Copyright © 2020-2023  润新知