考虑以下字符串:
string s = "The man is (old).";
如果我使用:
Regex.Replace(s,@"\b\(old\)\b", @"<b>$&</b>");
输出是:
这个人是(老)。
但我会像这样改变整个(旧)词:
这个人是(旧)。
我怎样才能做到这一点?
\b
不会匹配,因为(
and)
不是单词字符。你把它们放在那里有什么原因吗,因为你可以把它们排除在外:
string replaced = Regex.Replace(s,@"\(old\)", @"<b>$&</b>");
根据规格:
\b
: 匹配必须出现在 \w(字母数字)和 \W(非字母数字)字符之间的边界上。
-space-
并且)
都是非字母数字。(
和相同.
,因此\b
在这两种情况下都不匹配。
您甚至可能不需要正则表达式...尝试
string result = s.Replace("(old)", "<b>(old)</b>");
或者
string result = s.Replace("(", "<b>(").Replace(")", ")</b>");