Вы можете легко сделать это для однострочных комментариев, используя отрицательный вид сзади (но все еще подверженный проблеме буквальной строки вида ".... // ....."):
string target = "replace // don't replace";
var output = Regex.Replace(target, "(?<!//.*)replace", "new string");
Console.WriteLine(output); // new string // don't replace
Может быть, это может работать для многострочного:
string target =
@"replace;
/*
* don't replace
*/
replace;
";
var output = Regex.Replace(target, @"(?<!./\*\s*)replace(?!\s*\*/)", "new string", RegexOptions.Singleline);
Console.WriteLine(output);
вывод:
новая строка;/ * * не заменять * / новую строку;