1

考虑以下字符串:

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

如果我使用:

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

输出是:
这个人是(老)。
但我会像这样改变整个(旧)词:
这个人是(旧)

我怎样才能做到这一点?

4

2 回答 2

7

\b不会匹配,因为(and)不是单词字符。你把它们放在那里有什么原因吗,因为你可以把它们排除在外:

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

根据规格

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

-space-并且)都是非字母数字。(和相同.,因此\b在这两种情况下都不匹配。

于 2012-07-11T18:32:40.840 回答
1

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

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

或者

string result = s.Replace("(", "<b>(").Replace(")", ")</b>");
于 2012-07-11T18:55:05.333 回答