2012-02-01 193 views
0

準確地工作,我有這樣的代碼串:正則表達式匹配不分號

0926;0941;0917;0930;094D; 

我要搜索:在上面的字符串0930;094D;。我使用此代碼中查找的字符串片段:

static bool ExactMatch(string input, string match) 
    { 

     return Regex.IsMatch(input, string.Format(@"\b{0}\b", Regex.Escape(match))); 

    } 

的問題是,有時代碼工作,有時沒有。如果我匹配單個代碼,例如:0930; ,它的工作原理,但當我添加094D; ,它會跳過匹配。

如何優化代碼以使用分號準確工作?

回答

1

試試這個,我已經測試..

string val = "0926;0941;0917;0930;094D;"; 
string match = "0930;094D;"; // or match = "0930;" both found 

if (Regex.IsMatch(val,match)) 
    Console.Write("Found"); 
else Console.Write("Not Found"); 
+0

它正在工作,但讓我看看它是否執行各種字符串或不。以前也有時會有工作,但在某些場合失敗。 – RKh 2012-02-01 06:34:54

0

也許我沒有正確理解你的處境;但如果你在字符串中尋找一個精確匹配,不能你只是避免正則表達式和使用string.Contains:

static bool ExactMatch(string input, string match) 
{ 
    return input.Contains(match); 
} 
+0

「包含」未執行完全匹配。我嘗試過,但即使在一個代碼在開頭,另一個在結尾時也是如此。 – RKh 2012-02-01 06:33:59

1

「\ B」代表一個單詞邊界,這是在一個字之間一個非單詞字符。不幸的是,分號不是一個單詞字符。 「0926; 0941; 0917; 0930; 094D」末尾沒有「\ b」;「因此正則表達式不匹配。

爲什麼不直接刪除正則表達式中的最後一個「\ b」?