还为正则表达式使用逐字字符串,请参阅msdn 上的字符串文字
Console.WriteLine(Regex.IsMatch(@"C:\User\User\My Documents\Visual Studio 2010\Project\", @"\bProject\b"));
否则你必须逃脱两次
Console.WriteLine(Regex.IsMatch(@"C:\User\User\My Documents\Visual Studio 2010\Project\", "\\bProject\\b"));
查看常规字符串和逐字字符串的区别
string input = @"C:\User\User\My Documents\Visual Studio 2010\Project\";
string reg = "\bProject\b";
string regVerbatim = @"\bProject\b";
Regex r = new Regex(reg);
Regex rVerbatim = new Regex(regVerbatim);
Console.Write("Regular String regex: " + r.ToString() + " isMatch :");
Console.WriteLine(r.IsMatch(input));
Console.Write("Verbatim String regex: " + rVerbatim.ToString() + " isMatch :");
Console.WriteLine(rVerbatim.IsMatch(input));
输出:
常规字符串 regex:Projec isMatch :False
Verbatim String regex: \bProject\b isMatch :True
在常规字符串中,正则表达式的最后一个“t”被删除,单词之前的空字符串也被删除,这是因为字符串被解释\b
为退格并且不会将其交给正则表达式解释器。
因此,要么转义反斜杠,以便将 from\\bProject\\b
\bProject\b
传递给正则表达式解释器,要么使用逐字字符串,这样字符串就不会解释\b
.