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

5 .net regex

为什么第二个陈述失败了?

作品

Regex.Replace("zz WHERE zz", "where", "yy", RegexOptions.IgnoreCase | RegexOptions.Singleline);
Run Code Online (Sandbox Code Playgroud)

才不是

Regex.Replace("zz WHERE zz", "\bwhere\b", "yy", RegexOptions.IgnoreCase | RegexOptions.Singleline);
Run Code Online (Sandbox Code Playgroud)

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

Regex.Replace("zz WHERE zz", " where ", "yy", RegexOptions.IgnoreCase | RegexOptions.Singleline);
Run Code Online (Sandbox Code Playgroud)

Joe*_*oey 7

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

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

"\\bwhere\\b"
Run Code Online (Sandbox Code Playgroud)

或使用逐字字符串文字:

@"\bwhere\b"
Run Code Online (Sandbox Code Playgroud)