前两天在CSDN看到这样一个问题:
给定一段文字的编码序列,如604F20007D59(你 好),如何得到其对应的文字
有人给出了如下正则解决方案:
string input = "4F600020597D";
string patern = "(?<=^(.{4})*)(?!$)";
string output = Regex.Unescape(Regex.Replace(input, patern, @"/u"));
Console.WriteLine(output);
这个方法不错。
我又想到另一个问题:
如何把一个字符串按固定长度分割呢?比如把刚才的字符串按长度为4分割
最初我是这样的:
string patern2 = "(?<=^(.{4})+)(?!$)";
foreach (string item in Regex.Split(input, patern2))
Console.WriteLine(item);
但是一运行就发现,结果并不正确,我马上想到了非捕获组,不过最初没找到合适的位置,最后几经周折,终于成功了,代码如下:
string patern3 = "(?<=^(?:.{4})+)(?!$)";