为什么第二个陈述失败了?
作品
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)
因为\b是退格控制字符(U + 0008).那里的反斜杠本身甚至没有达到正则表达式.
要在正则表达式中按预期使用它,您需要双重转义(转义C#的字符串的反斜杠,以便它们是正则表达式的正常反斜杠):
"\\bwhere\\b"
Run Code Online (Sandbox Code Playgroud)
或使用逐字字符串文字:
@"\bwhere\b"
Run Code Online (Sandbox Code Playgroud)