Regex.Replace为什么\ b阻止这个?

时间:2010-05-19 18:50:59

标签: .net regex

为什么第二个语句失败?

作品

Regex.Replace("zz WHERE zz", "where", "yy", RegexOptions.IgnoreCase | RegexOptions.Singleline);

没有

Regex.Replace("zz WHERE zz", "\bwhere\b", "yy", RegexOptions.IgnoreCase | RegexOptions.Singleline);

这可以替代我不想做的空间

Regex.Replace("zz WHERE zz", " where ", "yy", RegexOptions.IgnoreCase | RegexOptions.Singleline);

2 个答案:

答案 0 :(得分:7)

因为\b是退格控制字符(U + 0008)。那里的反斜杠本身甚至没有达到正则表达式。

要在正则表达式中按预期使用它,您需要双重转义(转义C#的字符串的反斜杠,以便它们是正则表达式的正常反斜杠):

"\\bwhere\\b"

或使用逐字字符串文字:

@"\bwhere\b"

答案 1 :(得分:2)

您需要在C#中转义反斜杠,否则请使用逐字字符串文字@

@"\bwhere\b"