日期:2014-05-17  浏览次数:20798 次

一个C# 正则表达式的问题
目前做串口开发 需要发送 十六进制 数据包
问题如下

MatchCollection 集合 = Regex.Matches("17016112233445566","正则表达式");
List<byte> 缓存 = new List<byte>
foreach (Match 字节 in 集合)
    {
       缓存.Add(byte.Parse(m.Value, NumberStyles.HexNumber))
    }


我要 把1701611223344....字符串 发送给从机 第一字节AA 第二字节16 11 22 ... 这样的话 正则表达式如何写呢? 
忘论坛兄弟指点小弟 急切。。
正则表达式 串口发送 MatchCollection Regex.Matches c#

------解决方案--------------------
这用什么正则啊,都知道截取几位,就直接substring取出来,然后转为16禁制呗
------解决方案--------------------
List<string> 缓存 = Regex.Split("17016112233445566","(?<=\\G\\d{2})").ToList();

------解决方案--------------------

 string str = "17016112233445566";

                List<string> List = new List<string>();
                List.Add(str.Substring(0, 3));
                var newList = System.Text.RegularExpressions.Regex.Split(str.Substring(3), "(?<=\\G.{2})(?!$)");
                List.AddRange(newList.ToList());
                List<string> resultList = new List<string>();
                foreach (var s in List)
                {
                    int num = Convert.ToInt32(s);
                    resultList.Add(Convert.ToString(num, 16));
                }

------解决方案--------------------
string str = "17016112233445566";
            var ary = Regex.Matches(str, @"(?<=\d{3}(\d{2})*)\d{2}");
            foreach (Match m in ary)
            {
                Console.WriteLine(m.Value);
            }