Regex заменить указанный текст - PullRequest
4 голосов
/ 01 июня 2011

Я хочу заменить некоторые слова в тексте, но только при условии, как, например, если каждое окружено пробелами.

Для этого я использую:

Regex rx = Regex(@"\s+" + word + @"\s+");
str = rx.Replace(str, word2);

В конце я получаю замененные пробелы также (и все другое указанное окружение).Как это можно обойти?

Ответы [ 3 ]

5 голосов
/ 01 июня 2011

Вы можете использовать якорь \b , чтобы сопоставить границу между \w (алфавитно-цифровым) и \W (не алфавитно-цифровым) символом .:

Debug.Assert(Regex.Match(word, "^\w+$").Success);

string result = Regex.Replace(input, @"\b" + word + @"\b", word2);
1 голос
/ 01 июня 2011
str = Regex.Replace(str ,@"(?<first>\s+)" + word + @"(?<last>\s+)","${first}" + word2 + "${last}");
0 голосов
/ 01 июня 2011

Регулярное выражение выглядит нормально для описываемой вами модели. Я использую Expresso , чтобы помочь проверить мои шаблоны регулярных выражений. Существует также RegExr , онлайн-инструмент

...