You may give a try to the Balancing Group Definitions:
string pattern = @"^[^\[\]]*" +
@"(" +
@"((?'Open'\[)[^\[\]]*)+" +
@"((?'Close-Open'\])[^\[\]]*)+" +
@")*" +
@"(?(Open)(?!))$";
var results =
Regex.Match(input, pattern)
.Groups["Close"].Value
.Split(new char[] { '=', ',' });
This outputs:
Salesperson
"James Almond"
Area
"Europe "Area 1" (Germany)"
Area
"North America"
Area
"North America [Level A]"