Как правило, вы хотите найти все последовательности цифр, необязательно заканчивающиеся десятичной точкой и другой последовательностью цифр, а затем добавить 'c'. Вот пример, если вы используете Perl (ваш вопрос не говорит):
$_ = 'treand60(12.3)/1010 + 1 >1010';
s/\b\d+(?:\.\d+)?/$&c/g;
print; # output is "treand60(12.3c)/1010c + 1c >1010c"
\d+
- это 1 или более цифр, а затем \.\d+
- это 1 или более цифр после десятичной точки. (?: ... )
является группой без захвата . Последний ?
означает «соответствовать нулю или одному из них» (т.е. это необязательно). А \b
означает совпадение только на границах слова (это предотвращает сопоставление чего-то вроде «Hello123», поскольку число идет сразу после символа слова).
Вот эквивалент C #:
using System.Text.RegularExpressions;
// ...
string input = "treand60(12.3)/1010 + 1 >1010";
Regex regex = new Regex(@"\b\d+(?:\.\d+)?");
string output = regex.Replace(input, (m) => m.Value + 'c');
Console.WriteLine(output); // prints "treand60(12.3c)/1010c + 1c >1010c"
Лямбда-выражение внутри Regex.Replace является MatchEvaluator , который просто получает текст совпадения и добавляет 'c'.