日期:2014-05-18  浏览次数:20809 次

请教,如何用正则获取{}中各嵌套层的字符串
如果我的字符串内容是
"abc+dcf {{abc+{dcf({bdf-(123)})-254/387{djghdfkd}}/{defsf{sffdf}}}}/dfghdsdj-{dgljljg.dkjg/djgfh{djg(djgjg)}}"这种嵌套字符串

我可以通过基于平衡组的Pattern"\{(?>[^\{\}]+|(?<DEPTH>\{)|(?<-DEPTH>\}))*(?(DEPTH)(?!))\}"获得字符串"{{abc+{dcf({bdf-(123)})-254/387{djghdfkd}}/{defsf{sffdf}}}}
{dgljljg.dkjg/djgfh{djg(djgjg)}}"

如果我需要获得每一对嵌套"{}"中的字符串的值,程序应该怎么写?谢谢各位。

------解决方案--------------------
C# code

List<string> temp_list = new List<string>();
        public void GetMatchString(string tempStr,string pattern)
        {
            foreach (Match m in Regex.Matches(tempStr, pattern))
            {
                temp_list.Add(m.Value);
                GetMatchString(m.Value.Remove(m.Value.Length-1),pattern);

            }

        }

------解决方案--------------------
按照{}的数量排序之后处理