解决方案 »

  1.   


    public static void Find_07_81_08_Substring()
    {
    string str = @"FF FF FF FF CA CB CC CD 02 FF 08 00 00 07 68 B3 A4 0F A0 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 73 6C 2E 10 07 
       C7 3B 07 81 08 7F FF 4B 00 00 00 00 00 07 81 08 00 00 00 00 00 00 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 76 
       39 44 C2 00 00 00 02 07 81 08 09 60 00 12 00 00 02 02 07 81 08 7F FF 4B 03 00 00 00 03 07 81 08 00 00 00 03 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 00 0E 07 83 06 00 00 00 00 00 
       00 07 83 04 00 00 00 01 1F EA EB EC ED"; Regex regex = new Regex(@"07 81 08( [A-Z0-9][A-Z0-9](?=\s*)){8}", RegexOptions.IgnoreCase);
    foreach (Match match in regex.Matches(str))
    {
    Console.WriteLine(match.Value);
    }
    }
      

  2.   


    谢谢解答,但是结果还是没有找出完整的10组数据,这个问题快奔溃了,查了一下,大概就是有一些数据从TCP/IP过来的时候,完整的数据包,有一些07 81 08 换行了。继续等待高手解答这个问题,感觉正则没法处理。
      

  3.   


    public static void Find_07_81_08_Substring()
    {
    string str = @"FF FF FF FF CA CB CC CD 02 FF 08 00 00 07 68 B3 A4 0F A0 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 73 6C 2E 10 07
       C7 3B 07 81 08 7F FF 4B 00 00 00 00 00 07 81 08 00 00 00 00 00 00 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 76
       39 44 C2 00 00 00 02 07 81 08 09 60 00 12 00 00 02 02 07 81 08 7F FF 4B 03 00 00 00 03 07 81 08 00 00 00 03 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 00 0E 07 83 06 00 00 00 00 00
       00 07 83 04 00 00 00 01 1F EA EB EC ED"; Regex regex = new Regex(@"(?<header>07 81 08 )((?<repeat>[A-Z0-9][A-Z0-9])(?:[^A-Z0-9]*)){8}", RegexOptions.Multiline);
    foreach (Match match in regex.Matches(str))
    {
    Console.WriteLine(match.Groups["header"].Value + String.Join(" ", match.Groups["repeat"].Captures.Cast<Capture>().Select(c => c.Value)));
    }
    Console.WriteLine(Regex.Matches(str, @"^", RegexOptions.Multiline).Count);
    }
      

  4.   


    Console.WriteLine(Regex.Matches(str, @"^", RegexOptions.Multiline).Count);这行去掉
      

  5.   


    你这个做法是给07 81 08开头的数据包加了一个标识?然后再做处理
    没有啊,元数据还是你的数组啊。建议你去看一下 MSDN,正则的基本语法你应该知道一下,结贴吧。
      

  6.   


    你这个做法是给07 81 08开头的数据包加了一个标识?然后再做处理
    没有啊,元数据还是你的数组啊。建议你去看一下 MSDN,正则的基本语法你应该知道一下,结贴吧。其实如果是以下这段字符串 就有问题了 哎
     string str = @"FF FF FF FF CA CB CC CD 02 FF 08 00 00 0F 1C FA AE 0F A0 05 00 08 00 1E F3 DD 00 00 00 00 05 01 08 00 00 9E 54 00 32 01 08 05 10 08 00 2A 00 3B A8 02 22 0B 05 11 08 04 2A 00 3B A8 02 28 BC 05 12 08 08 AE 00 37 57 F0 2A 76 05 13 08 0C 5A 00 37 57 F0 24 0C 05 14 08 10 AE 00 33 07 DE 25 AB 05 15 08 14 5A 00 33 07
    DE 2C 7B 05 16 08 18 5A 00 2E A7 CC 28 13 05 17 08 1C AE 00 2E A7 CC 21 B9 07 82 08 00 02 4C E5 00 04 00 00 07 80 08 00 00 01 F4 7F 00 45 42 07 80 08 54 74 4E 72 10 0F 74 A5 07 81 08 7F FF 4B 00 00 00 00 00 07 81 08 00 00 00 00 00 00 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 76 39 44 C2 00 00 00 02 07 81 08 04 AC 00 12 00 00 02 02 07 81 08 7F FF 4B 03 00 00 00 03 07 81 08 00 00 00 03 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 82 08 00 02 4C E5 00 04 00 00 07 83 05 FF FF 00 09 0E 07 83 06 08 00 01 00 00 00 07 83 04 00 00 00 01 38 EA EB EC ED
    FF FF FF FF CA CB CC CD 02 FF 08 00 00 0F 1D 13 19 07 A0 05 00 08 00 1E F4 0F 00 00 00 00 05 01 08 00 00 9E 55 00 32 01 08 05 10 08 00 2A 00 3B A8 02 22 05 05 11 08 04 2A 00 3B A8 02 28 B7 05 12 08 08 AE 00 37 57 F0 2A 6B 05 13 08 0C 5A 00 37 57 F0 24 02 05 14 08 10 AE 00 33 07 DE 25 9B 05 15 08 14 5A 00 33 07
    DE 2C 6A 05 16 08 18 5A 00 2E A7 CC 27 FE 05 17 08 1C AE 00 2E A7 CC 21 A3 07 81 08 7F FF 4B 00 00 00 10 05 07 81 08 00 00 00 00 00 00 12 05 07 81 08 7F FF 4B 01 00 00 10 06 07 81 08 00 00 00 01 00 00 12 06 07 81 08 7F FF 4B 02 00 00 10 07 07 81 08 00 00 00 02 00 00 12 07 07 81 08 7F FF 4B 03 00 00 10 08 07 81
    08 00 00 00 03 00 00 12 08 07 81 08 7F FF 4B 04 00 00 10 09 07 81 08 01 8C 00 04 00 00 12 09 07 82 08 00 02 4C E5 00 04 00 00 07 83 05 FF FF 00 09 0E 07 83 06 08 00 01 00 00 00 07 83 04 00 00 00 01 3C EA EB EC ED
    FF FF FF FF CA CB CC CD 02 FF 08 00 00 0F 1D 2B 84 0F A0 05 00 08 00 1E F4 41 00 00 00 00 05 01 08 00 00 9E 56 00 32 01 08 05 10 08 00 2A 00 3B A8 02 22 00 05 11 08 04 2A 00 3B A8 02 28 B2 05 12 08 08 AE 00 37 57 F0 2A 61 05 13 08 0C 5A 00 37 57 F0 23 F7 05 14 08 10 AE 00 33 07 DE 25 8B 05 15 08 14 5A 00 33 07
    DE 2C 5A 05 16 08 18 5A 00 2E A7 CC 27 E8 05 17 08 1C AE 00 2E A7 CC 21 8E 07 81 08 7F FF 4B 00 00 00 20 0A 07 81 08 00 00 00 00 00 00 22 0A 07 81 08 7F FF 4B 01 00 00 20 0B 07 81 08 00 00 00 01 00 00 22 0B 07 81 08 7F FF 4B 02 00 00 20 0C 07 81 08 00 00 00 02 00 00 22 0C 07 81 08 62 B3 38 43 00 00 20 0D 07 81
    08 06 3C 00 13 00 00 22 0D 07 81 08 7F FF 4B 04 00 00 20 0E 07 81 08 00 00 00 04 00 00 22 0E 07 82 08 00 02 4C E5 00 04 00 00 07 83 05 FF FF 00 09 0E 07 83 06 00 00 01 00 00 00 07 83 04 00 00 00 01 F2 EA EB EC ED
    FF FF FF FF CA CB CC CD 02 FF 08 00 00 0F 1D 43 EF 07 A0 05 00 08 00 1E F4 73 00 00 00 00 05 01 08 00 00 9E 57 00 32 01 08 05 10 08 00 2A 00 3B A8 02 21 FA 05 11 08 04 2A 00 3B A8 02 28 AC 05 12 08 08 AE 00 37 57 F0 2A 56 05 13 08 0C 5A 00 37 57 F0 23 EC 05 14 08 10 AE 00 33 07 DE 25 7A 05 15 08 14 5A 00 33 07
    DE 2C 4A 05 16 08 18 5A 00 2E A7 CC 27 D2 05 17 08 1C AE 00 2E A7 CC 21 78 07 81 08 7F FF 4B 00 00 47 B0 0F 07 81 08 00 00 00 00 00 45 32 0F 07 81 08 7F FF 4B 01 00 00 30 10 07 81 08 00 00 00 01 00 00 32 10 07 81 08 7F FF 4B 02 00 00 30 11 07 81 08 00 00 00 02 00 00 32 11 07 81 08 58 EF 32 03 00 00 30 12 07 81
    08 04 AC 00 13 00 00 32 12 07 81 08 58 EF 32 04 00 00 30 13 07 81 08 07 CC 00 14 00 00 32 13 07 80 08 00 00 01 F4 7F 00 45 42 07 82 08 00 02 4C E5 00 04 00 00 07 83 05 FF FF 00 01 0E 07 83 06 00 00 01 00 00 00 07 83 04 00 00 00 01 8F EA EB EC ED";
      

  7.   


    你这个做法是给07 81 08开头的数据包加了一个标识?然后再做处理
    没有啊,元数据还是你的数组啊。建议你去看一下 MSDN,正则的基本语法你应该知道一下,结贴吧。其实如果是以下这段字符串 就有问题了 哎
     string str = @"FF FF FF FF CA CB CC CD 02 FF 08 00 00 0F 1C FA AE 0F A0 05 00 08 00 1E F3 DD 00 00 00 00 05 01 08 00 00 9E 54 00 32 01 08 05 10 08 00 2A 00 3B A8 02 22 0B 05 11 08 04 2A 00 3B A8 02 28 BC 05 12 08 08 AE 00 37 57 F0 2A 76 05 13 08 0C 5A 00 37 57 F0 24 0C 05 14 08 10 AE 00 33 07 DE 25 AB 05 15 08 14 5A 00 33 07
    DE 2C 7B 05 16 08 18 5A 00 2E A7 CC 28 13 05 17 08 1C AE 00 2E A7 CC 21 B9 07 82 08 00 02 4C E5 00 04 00 00 07 80 08 00 00 01 F4 7F 00 45 42 07 80 08 54 74 4E 72 10 0F 74 A5 07 81 08 7F FF 4B 00 00 00 00 00 07 81 08 00 00 00 00 00 00 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 76 39 44 C2 00 00 00 02 07 81 08 04 AC 00 12 00 00 02 02 07 81 08 7F FF 4B 03 00 00 00 03 07 81 08 00 00 00 03 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 82 08 00 02 4C E5 00 04 00 00 07 83 05 FF FF 00 09 0E 07 83 06 08 00 01 00 00 00 07 83 04 00 00 00 01 38 EA EB EC ED
    FF FF FF FF CA CB CC CD 02 FF 08 00 00 0F 1D 13 19 07 A0 05 00 08 00 1E F4 0F 00 00 00 00 05 01 08 00 00 9E 55 00 32 01 08 05 10 08 00 2A 00 3B A8 02 22 05 05 11 08 04 2A 00 3B A8 02 28 B7 05 12 08 08 AE 00 37 57 F0 2A 6B 05 13 08 0C 5A 00 37 57 F0 24 02 05 14 08 10 AE 00 33 07 DE 25 9B 05 15 08 14 5A 00 33 07
    DE 2C 6A 05 16 08 18 5A 00 2E A7 CC 27 FE 05 17 08 1C AE 00 2E A7 CC 21 A3 07 81 08 7F FF 4B 00 00 00 10 05 07 81 08 00 00 00 00 00 00 12 05 07 81 08 7F FF 4B 01 00 00 10 06 07 81 08 00 00 00 01 00 00 12 06 07 81 08 7F FF 4B 02 00 00 10 07 07 81 08 00 00 00 02 00 00 12 07 07 81 08 7F FF 4B 03 00 00 10 08 07 81
    08 00 00 00 03 00 00 12 08 07 81 08 7F FF 4B 04 00 00 10 09 07 81 08 01 8C 00 04 00 00 12 09 07 82 08 00 02 4C E5 00 04 00 00 07 83 05 FF FF 00 09 0E 07 83 06 08 00 01 00 00 00 07 83 04 00 00 00 01 3C EA EB EC ED
    FF FF FF FF CA CB CC CD 02 FF 08 00 00 0F 1D 2B 84 0F A0 05 00 08 00 1E F4 41 00 00 00 00 05 01 08 00 00 9E 56 00 32 01 08 05 10 08 00 2A 00 3B A8 02 22 00 05 11 08 04 2A 00 3B A8 02 28 B2 05 12 08 08 AE 00 37 57 F0 2A 61 05 13 08 0C 5A 00 37 57 F0 23 F7 05 14 08 10 AE 00 33 07 DE 25 8B 05 15 08 14 5A 00 33 07
    DE 2C 5A 05 16 08 18 5A 00 2E A7 CC 27 E8 05 17 08 1C AE 00 2E A7 CC 21 8E 07 81 08 7F FF 4B 00 00 00 20 0A 07 81 08 00 00 00 00 00 00 22 0A 07 81 08 7F FF 4B 01 00 00 20 0B 07 81 08 00 00 00 01 00 00 22 0B 07 81 08 7F FF 4B 02 00 00 20 0C 07 81 08 00 00 00 02 00 00 22 0C 07 81 08 62 B3 38 43 00 00 20 0D 07 81
    08 06 3C 00 13 00 00 22 0D 07 81 08 7F FF 4B 04 00 00 20 0E 07 81 08 00 00 00 04 00 00 22 0E 07 82 08 00 02 4C E5 00 04 00 00 07 83 05 FF FF 00 09 0E 07 83 06 00 00 01 00 00 00 07 83 04 00 00 00 01 F2 EA EB EC ED
    FF FF FF FF CA CB CC CD 02 FF 08 00 00 0F 1D 43 EF 07 A0 05 00 08 00 1E F4 73 00 00 00 00 05 01 08 00 00 9E 57 00 32 01 08 05 10 08 00 2A 00 3B A8 02 21 FA 05 11 08 04 2A 00 3B A8 02 28 AC 05 12 08 08 AE 00 37 57 F0 2A 56 05 13 08 0C 5A 00 37 57 F0 23 EC 05 14 08 10 AE 00 33 07 DE 25 7A 05 15 08 14 5A 00 33 07
    DE 2C 4A 05 16 08 18 5A 00 2E A7 CC 27 D2 05 17 08 1C AE 00 2E A7 CC 21 78 07 81 08 7F FF 4B 00 00 47 B0 0F 07 81 08 00 00 00 00 00 45 32 0F 07 81 08 7F FF 4B 01 00 00 30 10 07 81 08 00 00 00 01 00 00 32 10 07 81 08 7F FF 4B 02 00 00 30 11 07 81 08 00 00 00 02 00 00 32 11 07 81 08 58 EF 32 03 00 00 30 12 07 81
    08 04 AC 00 13 00 00 32 12 07 81 08 58 EF 32 04 00 00 30 13 07 81 08 07 CC 00 14 00 00 32 13 07 80 08 00 00 01 F4 7F 00 45 42 07 82 08 00 02 4C E5 00 04 00 00 07 83 05 FF FF 00 01 0E 07 83 06 00 00 01 00 00 00 07 83 04 00 00 00 01 8F EA EB EC ED";
    我测试过了,没有错啊,是 36 个啊