2014-07-03 118 views
1
string pattern = ".+\\"; 
     foreach (string file in files){ 
      richTextBox2.Text += Regex.Replace(file, @pattern, String.Empty) +"\n"; 
     } 

我想要做什麼應該是一個簡單的模式匹配和替換,文件包含完整路徑,例如:d:\test\t.txt。但每次它都會粉碎並說Illegal \ at the end of the pattern. 沒有快樂,我哪裏錯了?Regex.Replace的模式無法正常工作

回答

3

您需要轉義反斜線兩次

string pattern = ".+\\\\"; 

首先,你需要在字符串處理水平逃跑,所以"\\"成爲\的正則表達式引擎。

其次,正則表達式引擎也對特殊的轉義序列使用反斜槓,所以如果你想匹配文字反斜槓和正則表達式,你需要使用\\

由於反斜槓在正則表達式中相當常見,所以對它們使用逐字字符串通常是一個好主意(請參閱Rahul的解決方案)。

+0

葉氏,現在的工作很好,非常感謝! – Disciples

+2

賓果!在做正則表達式時,最好使用逐字串來減少混淆。 @ 「+ \\」 – Logarr

2

還有一個解決方案,您可以使用@字符串之前,以避免逃避特殊字符,如

string pattern = @".+\\"; 

CHECK MSDN