Для извлечения внутренней группировки {} используйте следующее регулярное выражение:
string extract = Regex.Replace(source, "\{\w(\{\w,\w\})\w\}", "$1");
На самом деле, если вы хотите удалить запятую ....
string extract = Regex.Replace(source, "\{\w\{(\w),(\w)\}\w\}", "{$1 $2}");
Для извлечения внешнего без внутренней группировки:
string extract = Regex.Replace(source, "(\{\w)\{\w,\w\}(\w\})", "$1 $2");
если в вашем примере a, b, c, d не являются буквально одиночными символами, то есть группами букв или даже пробелов и т. Д., Замените \ w на \ w + или . *
на основании вашего комментария о вложенности ....
string extract = Regex.Replace(source, "(\{\w)\{.*\}(\w\})\w*", "$1 $2");