using System.Collections.Generic;
using System.Text.RegularExpressions;
public static void Main()
var target = "AAA[xx]BBB[yyyy]CCC[zzz]DDD";
var inputs = new List<string>{
var result=new List<string>{target};
foreach(var input in inputs){
result=getSplit(input, result);
foreach(var r in result){
System.Console.WriteLine(r);
public static List<string> getSplit(string pattern, List<string> result){
var newResult=new List<string>();
foreach(var r in result){
var subs = Regex.Split(r,@"("+pattern.Replace("[","\\[").Replace("]","\\]")+")");
foreach(var sub in subs){