2013-10-14 45 views
0

我試圖匹配整個字再一個字符串。當我想將匹配限制爲整個單詞時,我遇到了一個問題。當我試圖找到它時,我發現我的理解有更大的問題。Regex.IsMatch澄清

下面的程序沒有找到匹配,我就期待:

class Program 
{ 
    static void Main(string[] args) 
    { 
     if (Regex.IsMatch("t1", "\bt1\b")) 
     { 
      return; // I was expecting this to be hit but it is not 
     } 
    } 
} 

任何人都可以指出我做了什麼錯?

回答

4

你需要逃避\b

使用\\逃避它,還是用@一字不差。

if (Regex.IsMatch("t1", @"\bt1\b")) 
{ 
    return; //This works as expected 
} 

這裏的Demo

1

您正則表達式工作。你只需要替換每個「\」符號「\\」或正則表達式前添加@告訴compiller,你的字符串是文字(@「您正則表達式」)。

1

問題是您忘記在「\ bt1 \ b」前添加@符號,或者您也可以在代碼中使用「\\ bt1 \\ b」。
所以,你的代碼應該是

Regex.IsMatch("t1", @"\bt1\b"); 

Regex.IsMatch("t1", "\\bt1\\b"); 

轉義序列錯誤的。