考虑以下字符串:
string s = "The man is (old).";
如果我使用:
Regex.Replace(s,@"\b\(old\)\b", @"<b>$&</b>");
输出结果为:
这个男人是(老)
但我会改变整个(旧的)这样的词:
该男子(旧)。
我该怎么做?
答案 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>");