正则表达式替换特定文本

时间:2011-05-31 21:40:42

标签: c# .net regex replace

我想替换文本中的某些单词,但仅限于条件,例如,如果每个单词都被空格包围。

为此,我使用:

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

最后,我也替换了空格(以及所有其他指定的环境)。怎么能绕过这个?

3 个答案:

答案 0 :(得分:5)

您可以使用the \b anchor来匹配\w(字母数字)和\W(非字母数字)字符之间的边界。:

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

string result = Regex.Replace(input, @"\b" + word + @"\b", word2);

答案 1 :(得分:1)

str = Regex.Replace(str ,@"(?<first>\s+)" + word + @"(?<last>\s+)","${first}" + word2 + "${last}");

答案 2 :(得分:0)

对于我描述的模式,正则表达式对我来说没问题。我使用Expresso来帮助验证我的正则表达式模式。还有RegExr,一个在线工具