Хорошо, у меня есть решение в регулярных выражениях, которое, кажется, работает нормально:
\ {\ s * ([^ \ {\}, \ s] +) \ s * (? :(? :: \ S * ([^ \ {\}, \ S] +) \ s *) (?: \ S * ([^ \ {\}, \ s] +) \ S *) *)?\}
Или даже притворяться, что способны понять это:
name = [^ \ {\}, \ s] +
ws = \ s*
\ {ws (имя) ws (?: (? :: ws (имя) ws) (?:, Ws (имя) ws) *)? \}
Я бы не сталНе рекомендую, но короткое тестирование, кажется, показывает, что это работает - хороший тизер для мозгов в 3 часа ночи;)
PS: Если вы сравниваете раздельное решение с этим или чем-то похожим, мне было бы интереснов слух, если бы были какие-либо различия в производительности - я не думаю, что регулярное выражение было бы особенно эффективным.