极限要求,字符串滤除问题,正则怎么改呢?
我有一个网络通信中字符串解析处理问题,字符串格式组装如下:"{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#