解决方案 »
- c# 异步通信,如何退出监听?
- 登录界面在无法连接服务器时,界面会假死,如何解决?
- 急:用C#实现对XML内容的操作(大家都来帮忙看看)
- 用C#和SQL2000做一个简单的排课系统
- 怎么将彩色图片转换成黑白图片(JPG)
- 为什么保存的时候 picturebox.image为空?
- 监控的线程的写法对不对?请赐教。
- Asp.net如果操作windows服务
- 有c#高手吗?(通讯程序,紧急求援)
- 关于ADO.net中执行一条insert语句,有些什么样的办法!哪一种效率最高,最节约内存!
- WCF使用CreateFile操作磁盘,提示访问拒绝(GetLastError()= 5)
- wpf 的启动窗口只能在根目录下?如果启动窗口在子目录下该怎么写?
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);
}
}
谢谢解答,但是结果还是没有找出完整的10组数据,这个问题快奔溃了,查了一下,大概就是有一些数据从TCP/IP过来的时候,完整的数据包,有一些07 81 08 换行了。继续等待高手解答这个问题,感觉正则没法处理。
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);
}
Console.WriteLine(Regex.Matches(str, @"^", RegexOptions.Multiline).Count);这行去掉
你这个做法是给07 81 08开头的数据包加了一个标识?然后再做处理
没有啊,元数据还是你的数组啊。建议你去看一下 MSDN,正则的基本语法你应该知道一下,结贴吧。
你这个做法是给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";
你这个做法是给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 个啊