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)
?