为什么第二个语句失败?
作品
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);
答案 0 :(得分:7)
因为\b
是退格控制字符(U + 0008)。那里的反斜杠本身甚至没有达到正则表达式。
要在正则表达式中按预期使用它,您需要双重转义(转义C#的字符串的反斜杠,以便它们是正则表达式的正常反斜杠):
"\\bwhere\\b"
或使用逐字字符串文字:
@"\bwhere\b"
答案 1 :(得分:2)
您需要在C#中转义反斜杠,否则请使用逐字字符串文字@
:
@"\bwhere\b"