Если это только 1 уровень и вы хотите разобрать строки, то вам не нужен RegEx:
string composition = "[somestring][anotherstring]";
string[] stringSeparators = new string[] {"][", "[", "]"};
string[] s = composition.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
Если вы хотите соответствовать точному шаблону:
Regex r = new Regex(@"^(\[[^\[\]]+\]){2}$");
Редактировать - ответить с выделенным синтаксисом кодом комментатору:
Для разбора строки Regex с использованием групп вы можете использовать:
foreach (Match match in Regex.Matches(composition, @"\[([^\[\]]+)\]"))
Console.WriteLine(match.Groups[1].Value);