Хотя на вопрос был дан ответ, это фрагмент кода со слегка измененным регулярным выражением:
var text = "This is 10-3-1 and 5-2.";
var re = new Regex(@"((?<first>\d+)(?:-(?<parts>\d+))+)");
foreach (Match match in re.Matches(text))
{
var reverseSequence = match
.Groups["first"]
.Captures.Cast<Capture>()
.Concat(match.Groups["parts"].Captures.Cast<Capture>())
.Select(x => x.Value)
.Reverse()
.ToArray();
text = text.Replace(match.Value, string.Join("-", reverseSequence));
}