正则表达式替换指定文本

4

我希望替换文本中的一些单词,但只在某些条件下进行,例如,如果每个单词都被空格包围。

为此,我使用:

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

最后,我同样替换了空格(和所有其他指定的周围字符)。如何规避这个问题?
3个回答

5

您可以使用锚点\b来匹配一个\w(字母数字)和一个\W(非字母数字)字符之间的边界:

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

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

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

有趣的例子,想到了类似的东西,但不知道可以通过这种方式访问组值。谢谢。 - Bogdan

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接