我希望替换文本中的一些单词,但只在某些条件下进行,例如,如果每个单词都被空格包围。
为此,我使用:
Regex rx = Regex(@"\s+" + word + @"\s+");
str = rx.Replace(str, word2);
最后,我同样替换了空格(和所有其他指定的周围字符)。如何规避这个问题?
您可以使用锚点\b
来匹配一个\w
(字母数字)和一个\W
(非字母数字)字符之间的边界:
Debug.Assert(Regex.Match(word, "^\w+$").Success);
string result = Regex.Replace(input, @"\b" + word + @"\b", word2);
str = Regex.Replace(str ,@"(?<first>\s+)" + word + @"(?<last>\s+)","${first}" + word2 + "${last}");