Allow for optional text that does not have brackets in it
String yourExampleString = "Place the string you want to parse here";
String regexString = @"([^\[])*(\[\[[a-zA-Z0-9\s]*\]\])?";
Regex regex = new Regex(regexString);
Matches matches = regex.Match(yourExampleString);
foreach(Match match in matches)
{
}
Now you have two capture groups: optional leading text without brackets and optional text in brackets. When your match succeeds all you have to do is inspect the content of the first group for leading text and the second group for the bracketed content. You do this for all matches and you're done.
That should do it!
Cheers,