Regex Match.Value retornando valor inteiro, não os grupos correspondentes

Atualmente, estou tentando realizar a tarefa relativamente simples de capturar valores de uma string existente entre conjuntos de chaves usando uma expressão regular. A expressão que escrevi funciona bem em várias ferramentas online nas quais testei, mas esse não é o caso no .NET.

String str= "{Value1}-{Value2}.{Value3}";
Regex regex = new Regex( @"\{(\w+)\}");

MatchCollection matches = regex.Matches(str);

foreach(Match match in matches)
{
    Console.WriteLine(match.Value);
}

Eu esperaria obter 3 correspondências de "Valor1", "Valor2", "Valor3". No entanto, o .NET também está retornando os colchetes, ou seja, "{Value1}", "{Value2}", "{Value3}".

Qualquer ajuda sobre como isso pode ser alcançado seria ótimo.

questionAnswers(3)

yourAnswerToTheQuestion