日期:2014-05-20 浏览次数:21081 次
string yourStr = "aaa[bbb[ccc,ddd[eee,fff]],ggg[hhh,iii]]";
Regex regExp = new Regex(@"[^\[\],]+\[(((?<o>\[)|(?<-o>\])|[^\[\]])+(?(o)(?!)))\]");
List<string> result = new List<string>();
Action<string> GetSubString = null;
GetSubString = s =>
{
Match m = regExp.Match(s);
do
{
result.Add(m.Value);
if (regExp.IsMatch(m.Groups[1].Value))
{
GetSubString(m.Groups[1].Value);
}
m = m.NextMatch();
} while (m.Success);
};
GetSubString(yourStr);
result.ForEach(s => Console.WriteLine(s));
/*
输出
aaa[bbb[ccc,ddd[eee,fff]],ggg[hhh,iii]]
bbb[ccc,ddd[eee,fff]]
ddd[eee,fff]
ggg[hhh,iii]
*/