This can be done without using RegEx:
char[] splitChars = new[] { '[' };
string anc = @"[ANC 2 DATE] = [yes] AND [AllIFADone] = [YES] AND";
string[] ancSplit = anc.Split(splitChars, StringSplitOptions.RemoveEmptyEntries)
.Select(strx => ('[' + strx.Substring(0, strx.IndexOf(']') + 1))).ToArray();
However, I am not claiming that doing it this way is better than using a RegEx.
Sample result:
? ancSplit
{string[4]}
[0]: "[ANC 2 DATE]"
[1]: "[yes]"
[2]: "[AllIFADone]"
[3]: "[YES]"