PHP e RegEx: dividir uma string por vírgulas que não estão dentro de colchetes (e também colchetes aninhados)

Dois dias atrás eu comecei a trabalhar em um analisador de código e estou preso.

Como posso dividir uma string por vírgulas que não estão dentro de colchetes, deixe-me mostrar o que quero dizer:

Eu tenho essa string para analisar:

one, two, three, (four, (five, six), (ten)), seven

Eu gostaria de obter este resultado:

array(
 "one"; 
 "two"; 
 "three"; 
 "(four, (five, six), (ten))"; 
 "seven"
)

mas ao invés disso eu recebo:

array(
  "one"; 
  "two"; 
  "three"; 
  "(four"; 
  "(five"; 
  "six)"; 
  "(ten))";
  "seven"
)

Como posso fazer isso no PHP RegEx.

Agradeço antecipadamente !

questionAnswers(7)

yourAnswerToTheQuestion