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

如何用正则匹配"嵌套"类型的,得出想要的结果?
代码:
HTML code

{
第一层
{
第二层
}
}


用正则后想取得两个数据.
1,
C# code

第一层
{
第二层
}


2,
C# code

第二层


如何写?

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

        static Regex reg = new Regex(@"(?<=\{)[^{}]+((?:(?<Open>\{)(?:[^{}]+))*(?:(?<-Open>\})[^{}]*)*)*(?=\})");
        static void Main(string[] args)
        {
            string str = @"{
第一层
{
第二层
{
第三层
{
第四层
{
第五层
{
第六层
}
}
}
}
}
}
";
            GetValue(str);
            Console.ReadKey();
        }
        public static void GetValue(string str)
        {
            Match m = reg.Match(str);
            if (m.Success)
            {
                Console.WriteLine(m.Value);
                GetValue(m.Value);
            }
        }
/*
第一层
{
第二层
{
第三层
{
第四层
{
第五层
{
第六层
}
}
}
}
}

第二层
{
第三层
{
第四层
{
第五层
{
第六层
}
}
}
}

第三层
{
第四层
{
第五层
{
第六层
}
}
}

第四层
{
第五层
{
第六层
}
}

第五层
{
第六层
}

第六层


*/