2013-04-26 188 views
0

我正在尝试使用TFS电动工具与DocumentWell功能计算正则表达式。带有单词边界的正则表达式不匹配

我正在测试这个在控制台应用程序的时刻。

Console.WriteLine(Regex.IsMatch(@"C:\User\User\My Documents\Visual Studio 2010\Project\", "\bProject\b")); 

这是我曾尝试(输出为“假”,所以我的正则表达式字符串\bProject\b我也跟着通过以下链接:。

http://www.regular-expressions.info/wordboundaries.html

而且我认为他是我的理解...我真的很困扰正则表达式,所以有人可以帮我解决这个正则表达式,并解释我做错了什么?

回答

2

也使用正则表达式的逐字字符串,请参阅String literals on 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)); 

输出:

正规字符串的正则表达式:工程中的isMatch:假
Verba蒂姆字符串的正则表达式:\ bProject \ b isMatch:真

在常规字符串的正则表达式的最后一个“T”被删除,也为空字符串的话之前,也就是因为字符串解释\b退格键和不会将它交给正则表达式解释器。

因此,无论转义反斜线使从\\bProject\\b\bProject\b被交给正则表达式解释器,或使用逐字字符串,使字符串不解释\b

相关问题