2013-04-26 99 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

相關問題