С помощью PCRE вы можете полагаться на метод SKIP-FAIL:
(?:Untouchable1|Untouchable2|Untouchable3|other words to keep)(*SKIP)(*F)|other|words|to|match-and-replace
Поскольку вы используете. NET, а именно C#, и имеете код доступа, вы можете использовать шаблон, где вы фиксируете слова, которые нужно заменить, и просто сопоставляете слова, которые нужно сохранить, а затем используете оценщик совпадений для проверки значения группы 1: если совпадение группы 1 выполнено успешно, замените, в противном случае сохраните матч.
var pattern = @"Untouchable1|Untouchable2|Untouchable3|other words to keep|(other|words|to|match-and-replace)";
var result = Regex.Replace(testString, pattern, m =>
m.Groups[1].Success ? replaceWith : m.Value);