zoukankan      html  css  js  c++  java
  • 正则表达式

    第一次用正则表达式:这东西有点牛啊

    要求:

    在一个字符串中找到匹配项: 如下的字符串str:

    FF FF FF FF CA CB CC CD 02 FF 08 00 00 7C F9 40 65 0F A0 05 00 08 00 FF F2 5F 00 00 00 81 05 01 08 00 05 1B 24 00 32 01 10 05 10 08 3C 5A 02 36 C8 17 A0 41 05 11 08 68 5A 00 44 37 EC 61 9E 05 12 08 44 5A 00 37 28 13 61 D1 05 13 08 58 5A 00 44 17 EC E3 02 05 14 08 48 5A 00 37 48 13 A3 26 05 15 08 4C 5A 00 44 17
    EC A4 AA 05 16 08 50 5A 00 37 58 13 A5 7D 05 17 08 40 5A 00 44 17 EC A6 32 05 18 08 54 5A 00 37 58 13 A6 A3 05 19 08 5C 5A 00 37 58 13 A8 4A 05 1A 08 30 5A 00 44 17 EC A8 5C 05 1B 08 60 5A 00 37 58 13 A9 D1 05 1C 08 24 5A 00 44 17 EC A9 E3 05 1D 08 64 5A 00 37 58 13 AB 2D 05 1E 08 1C 5A 00 44 17 EC AB 65 05 1F
    08 0C 5A 00 44 17 EC AC C9 07 82 08 00 02 4C E5 00 01 00 00 07 80 08 00 00 01 F4 7F 00 45 12 07 80 08 54 64 C8 83 10 58 84 CD 07 81 08 7F FF 4B 00 00 26 00 00 07 81 08 00 00 00 00 00 1D 02 00 07 81 08 7F FF 4B 01 00 00 00 01 07 81 08 00 00 00 01 00 00 02 01 07 81 08 7F FF 4B 02 00 00 00 02 07 81 08 00 00 00 02
    00 00 02 02 07 81 08 6C 2E 3E 43 00 00 00 03 07 81 08 1B E4 00 23 00 00 02 03 07 81 08 7F FF 4B 04 00 00 00 04 07 81 08 00 00 00 04 00 00 02 04 07 80 08 00 00 01 F4 7F 00 45 12 07 82 08 00 02 4C E5 00 01 00 00 07 83 05 FF FF 00 10 0E 07 84 03 04 84 10 07 83 06 00 00 00 00 00 00 07 83 04 00 00 00 01 95 EA EB EC
    ED";

    找到以07 81 08开头的8个字节的数据。

    首先想到的是IndexOf的方法找索引,然后通过substring截取指定长度的字符串。真是很麻烦最笨的办法了。这时候 正则表达式就派上用场了:

    代码如下:

          static void Main(string[] args)
            {
                string str=@"FF FF FF FF CA CB CC CD 02 FF 08 00 00 7C F9 40 65 0F A0 05 00 08 00 FF F2 5F 00 00 00 81 05 01 08 00 05 1B 24 00 32 01 10 05 10 08 3C 5A 02 36 C8 17 A0 41 05 11 08 68 5A 00 44 37 EC 61 9E 05 12 08 44 5A 00 37 28 13 61 D1 05 13 08 58 5A 00 44 17 EC E3 02 05 14 08 48 5A 00 37 48 13 A3 26 05 15 08 4C 5A 00 44 17
    EC A4 AA 05 16 08 50 5A 00 37 58 13 A5 7D 05 17 08 40 5A 00 44 17 EC A6 32 05 18 08 54 5A 00 37 58 13 A6 A3 05 19 08 5C 5A 00 37 58 13 A8 4A 05 1A 08 30 5A 00 44 17 EC A8 5C 05 1B 08 60 5A 00 37 58 13 A9 D1 05 1C 08 24 5A 00 44 17 EC A9 E3 05 1D 08 64 5A 00 37 58 13 AB 2D 05 1E 08 1C 5A 00 44 17 EC AB 65 05 1F
    08 0C 5A 00 44 17 EC AC C9 07 82 08 00 02 4C E5 00 01 00 00 07 80 08 00 00 01 F4 7F 00 45 12 07 80 08 54 64 C8 83 10 58 84 CD 07 81 08 7F FF 4B 00 00 26 00 00 07 81 08 00 00 00 00 00 1D 02 00 07 81 08 7F FF 4B 01 00 00 00 01 07 81 08 00 00 00 01 00 00 02 01 07 81 08 7F FF 4B 02 00 00 00 02 07 81 08 00 00 00 02
    00 00 02 02 07 81 08 6C 2E 3E 43 00 00 00 03 07 81 08 1B E4 00 23 00 00 02 03 07 81 08 7F FF 4B 04 00 00 00 04 07 81 08 00 00 00 04 00 00 02 04 07 80 08 00 00 01 F4 7F 00 45 12 07 82 08 00 02 4C E5 00 01 00 00 07 83 05 FF FF 00 10 0E 07 84 03 04 84 10 07 83 06 00 00 00 00 00 00 07 83 04 00 00 00 01 95 EA EB EC
    ED";
                //使用正则表达式 找到指定对应数据格式的字符串。
    
                Regex regex = new Regex("07 81 08.{24}");
                //估计你用的是这个 只能找到第一个匹配项
                //Console.WriteLine(regex.Match(str));
    
                MatchCollection Matches = regex.Matches(str,0);
                foreach (Match nextmach in Matches)
                {
                    Console.WriteLine("值: {0}, 索引:{1}",nextmach.Value,nextmach.Index);
                }
                Console.Read();
            }
    

      结果:

  • 相关阅读:
    弱引用的字典WeakDictionary(转)
    XBox360调试程序失败:Unable to start debugging.Connection to Xbox360 development kit lost
    托管C++中的范型和模板的区别
    智能指针的缺陷
    托管C++笔记(二)原创
    C#通过WMI操作本地共享文件夹
    很随便的随笔
    "The system cannot execute the specified program"
    C++多重继承
    托管C++笔记(一)原创
  • 原文地址:https://www.cnblogs.com/zhayunjia/p/4097374.html
Copyright © 2011-2022 走看看