Опираясь на пару уже опубликованных ответов. Утверждение нулевой ширины позволяет выполнять сопоставление с регулярным выражением, не помещая эти символы в соответствие. Поместив первую часть строки в группу, мы отделили ее от цифр, которые вы хотите заменить. Затем, используя утверждение обратной ширины нулевой ширины в этой группе, мы позволяем регулярному выражению действовать как обычно, но пропускаем символы в этой группе в совпадении. Точно так же мы поместили последнюю часть строки в группу и использовали предварительное утверждение нулевой ширины. Группировка Constructs на MSDN показывает группы, а также утверждения.
resultString = Regex.Replace(
im_cfg_contents,
@"(?<=\$displayHeight[\s]*=[\s]*"")(.*)(?="";)",
Convert.ToString(y_res));
Другой подход заключается в использовании следующего кода. Модификация регулярного выражения просто помещает первую часть в группу и последнюю часть в группу. Затем в строку замены мы добавляем обратно в первую и третью группы. Не так хорошо, как первый подход, но не так плохо, как выписывание части $ displayHeight. Подстановки в MSDN показывает, как работают символы $.
resultString = Regex.Replace(
im_cfg_contents,
@"(\$displayHeight[\s]*=[\s]*"")(.*)("";)",
"${1}" + Convert.ToString(y_res) + "${3}");