考虑以下字符串:
string s = "The man is (old).";
如果我使用:
Regex.Replace(s,@"\b\(old\)\b", @"<b>$&</b>");
输出是:
这个人是(老)。
但我会像这样更改整个(旧)词:
这个人是(老)。
我该怎么做?
最佳答案
\b
将不匹配,因为 (
和 )
不是单词字符。你把它们放在那里有什么原因吗,因为你可以把它们放在外面:
string replaced = Regex.Replace(s,@"\(old\)", @"<b>$&</b>");
根据specs :
\b
:匹配必须出现在\w(字母数字)和\W(非字母数字)字符之间的边界上。
-space-
和 )
都是非字母数字的。 (
和 .
相同,因此 \b
在这两种情况下都不会匹配。
关于c# - 如何用括号替换 C# 中的特定单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11439039/