如何用括号替换c#中的特定单词?

时间:2012-07-11 18:28:29

标签: c# regex string replace

考虑以下字符串:

string s = "The man is (old).";

如果我使用:

Regex.Replace(s,@"\b\(old\)\b", @"<b>$&</b>");

输出结果为:
这个男人是(老) 但我会改变整个(旧的)这样的词:
该男子(旧)

我该怎么做?

2 个答案:

答案 0 :(得分:7)

\b不匹配,因为()不是单词字符。你有没有理由把它们放在那里,因为你可以把它们放在一边:

 string replaced = Regex.Replace(s,@"\(old\)", @"<b>$&</b>");

根据specs

\b:匹配必须发生在\ w(字母数字)和\ W(非字母数字)字符之间的边界上。

-space-)都是非字母数字。 (.也是如此,因此\b在两种情况下都不匹配。

答案 1 :(得分:1)

您甚至可能不需要正则表达式...尝试

string result = s.Replace("(old)", "<b>(old)</b>");

string result = s.Replace("(", "<b>(").Replace(")", ")</b>");