像我这种情况,怎么样让我的数据从外往内正则匹配呢?
内容:
{$All[D:1,2,3:D] {$De[L:3,4,5:L] 这里是内容 }}{$De[L:3,4,5:L] 这里是内容 }{$All[D:1,2,3:D] 这里是内容}{$All[D:1,2,3:D] {$De[L:3,4,5:L] 这里是内容 }}{$De[L:3,4,5:L] 这里是内容 } static Regex reg = new Regex(@"\{[^{}]+((?:(?<Open>\{)[^\]]*\]([^}]+))*(?:(?<-Open>\})[^{}]*)*)*(?(Open)(?!))\}"); static void Main(string[] args) { string str = @"{$All[D:1,2,3:D] {$De[L:3,4,5:L] 这里是内容 }}"; GetValue(str); Console.WriteLine(reg.Match(str).Groups[2].Value); Console.ReadKey(); } public static void GetValue(string str) { MatchCollection mc = reg.Matches(str); foreach (Match m in mc) { Console.WriteLine(m.Value); Console.WriteLine("*******************"); GetValue(m.Groups[1].Captures[0].Value); } }/*{$All[D:1,2,3:D] {$De[L:3,4,5:L] 这里是内容 }}*******************{$De[L:3,4,5:L] 这里是内容 }******************* 这里是内容*/