Существует перегрузка Regex.Replace
, которая вместо того, чтобы брать строку для последнего аргумента, принимает делегат MatchEvaluator
- функцию, которая принимает объект Match
и возвращает string
.
Вы можете заставить эту функцию проанализировать целое число из свойства Match
Groups[1].Value
, а затем использовать его для индексации в свой список, возвращая найденный string
.