string input = "Hello World!";
string pattern = "(World|Universe)";
string replacement = "$1";
string result = Regex.Replace(input, pattern, replacement);
В следующем примере результат будет "Hello World!", так как $1 будет заменен первой группой (World|Universe), однако я хочу получить "Hello $1!"
Метод Regex.Escape предназначен для использования шаблона Regex, а не замены, поскольку он может вызывать другие символы, такие как слэши и другие символы шаблона Regex. Очевидное решение моей проблемы заключается в том, чтобы моя замена была равна "$$1", и достигнет "Hello $1!", но мне было интересно, является ли знак доллара единственным значением, которое мне нужно избежать (предполагая, что replacement генерируется пользователем, и Я не знаю этого заранее), или есть вспомогательная функция, которая делает это уже.
Кто-нибудь знает о функции, чтобы избежать замены значения, которое использует Regex.Replace(string input, string pattern, string replacement)?