请看下面的字符串:
string s = "The man is (old).";
如果我使用:
Regex.Replace(s,@"\b\(old\)\b", @"<b>$&</b>");
输出是:
该名男子是(旧)。
不过,我会改变整个像这样的(旧)字:
该名男子是(旧)。
我怎样才能做到这一点?
请看下面的字符串:
string s = "The man is (old).";
如果我使用:
Regex.Replace(s,@"\b\(old\)\b", @"<b>$&</b>");
输出是:
该名男子是(旧)。
不过,我会改变整个像这样的(旧)字:
该名男子是(旧)。
我怎样才能做到这一点?
\b
不匹配,因为(
和)
没有字字符。 有没有你为什么把它们放在那里,因为你可以只留出来一个原因:
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>");