当前位置:编程学习 > C#/ASP.NET >>

极限要求,字符串滤除问题,正则怎么改呢?

我有一个网络通信中字符串解析处理问题,字符串格式组装如下:
"{name}{age}{{shuxue}{yuwen}}"
实际的内容是:
string msg = "{张三}{12}{{95}{85}}"

我利用正则平衡组
 Regex _reg = new Regex(@"\{((?<Open>\{)|(?<-Open>\})|[^{}])*(?(Open)(?!))\}");
 mc = _reg.Matches(msg);

得到mc包含三组数据分别是:
mc[0].value = "{张三}";
mc[1].value = "{12}";
mc[2].value = "{{95}{85}}";

这些值都带有大括号,我想直接得到去掉大括号{}的值,即直接得到mc[0].value = "张三";那么正则表达式怎么改写呢?
当然了,使用字符串的subString函数也可以得到我想要的数据,但是效率太低,耗时1微妙多,我要求要远远低于1微妙才行。
请高手出招吧!
--------------------编程问答-------------------- \{(((?<Open>\{)|(?<-Open>\})|[^{}])*(?(Open)(?!)))\}
调用
mc[0].Groups[0].Value

试试 --------------------编程问答-------------------- (?<=\{)((?<Open>\{)|(?<-Open>\})|[^{}])*(?(Open)(?!))(?=\}) --------------------编程问答-------------------- 结果:
张三
12
{95}{85} --------------------编程问答-------------------- 二楼的对了,请给解释一下表达式行不行啊?

另外,调试时通过快速监视,发现mc[0]的值为"{张三}",mc[0].Value的值为"张三",这是为哈? --------------------编程问答-------------------- 自己顶
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,