Попробуйте это:
string input = "120 @ %60 {a}";
string pattern = @"%(\d+)";
string result = Regex.Replace(input, pattern, "$1%");
Console.WriteLine(result);
Шаблон %(\d+)
соответствует символу%, за которым следует хотя бы одна цифра. Цифры фиксируются в группе, на которую ссылаются через $1
в шаблоне замены $1%
, который заканчивается размещением символа% после захваченного числа.
Если вам нужно учитывать числа с десятичными знаками, например,% 60.50, вы можете использовать этот шаблон вместо: @"%(\d+(?:\.\d+)?)"