Здесь необходимо учитывать две вещи:
- Для специальных символов необходимо экранировать буквальный символ
\
, который лучше всего делать с помощью метода Regex.Escape
, если динамический текст литерала передается какпеременная для регулярного выражения - Невозможно полагаться на границы слов,
\b
, поскольку значение этой конструкции зависит от непосредственного контекста.
То, что вы можете сделать, это использоватьRegex.Escape
с однозначными границами слов (?<!\w)
и (?!\w)
:
string input= "This is [test] version of application.";
string key = "[test]";
string stringtoFind = $@"(?<!\w){Regex.Escape(key)}(?!\w)";
Console.WriteLine(Regex.Replace(input, stringtoFind, "1.0"));
Обратите внимание, что если вы хотите заменить строку ключа, когда она заключена в пробелы, используйте
string stringtoFind = $@"(?<!\S){Regex.Escape(key)}(?!\S)";
^^^^^^ ^^^^^