2011-08-12 94 views
5

也許簡單的問題..正則表達式:取字符串字面特別重字符

String text = "fake 43 60 fake"; 
String patt = "[43.60]"; 

Match m = Regex.Match(text, patt) 

在這種情況下,m.Success =真實的,因爲點取代任何字符(也的空間)。但我必須在字面上匹配字符串中的字符串。

當然,我可以在PATT

String patt = @"[43\.60]"; 

所以m.Success = FALSE使用「\」前點,但有在正則表達式世界多個特殊字符。

我的問題是,我怎樣才能使用正則表達式,一個字符串將被字面上採取,因爲它設置。所以「43.60」必須與「43.60」完全匹配。 '43?60'必須與'43?60'匹配....

謝謝。

回答

14

爲了得到一個正則表達式安全文字:

string escaped = Regex.Escape(input); 

例如,以匹配文字[43.60]

string escaped = Regex.Escape(@"[43.60]"); 

給出了內容的字符串:\[43\.60]

然後你可以用這個轉義內容來創建一個正則表達式;例如:

string find = "43?60"; 
string escaped = Regex.Escape(find); 
bool match = Regex.IsMatch("abc 43?60", escaped); 

注意,在很多情況下,你會想結合的轉義字符串與其他一些正則表達式的片段構成一個完整的圖案。

+0

謝謝!我知道這些情況有些事情...... – robertpnl