using System;
using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var s = "This is a [normal string ] made up of # different types # of characters";
var results = Regex.Split(s, @"(\[[^][]*]|#[^#]*#)|\s+")
.Where(x => !string.IsNullOrEmpty(x));
Console.WriteLine(string.Join("\n", results));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBzID0gIlRoaXMgaXMgYSBbbm9ybWFsIHN0cmluZyBdIG1hZGUgdXAgb2YgIyBkaWZmZXJlbnQgdHlwZXMgIyBvZiBjaGFyYWN0ZXJzIjsKCQl2YXIgcmVzdWx0cyA9IFJlZ2V4LlNwbGl0KHMsIEAiKFxbW15dW10qXXwjW14jXSojKXxccysiKQoJCQkuV2hlcmUoeCA9PiAhc3RyaW5nLklzTnVsbE9yRW1wdHkoeCkpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Kb2luKCJcbiIsIHJlc3VsdHMpKTsKCQkgCgl9Cn0=