Regex.Replace的模式无法正常工作

时间:2014-07-03 05:55:27

标签: c# regex

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. 我不知道哪里出错了?

2 个答案:

答案 0 :(得分:3)

您需要转义反斜杠两次

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

首先,您需要在字符串处理级别转义它,因此"\\"变为\到正则表达式引擎。

其次,正则表达式引擎也使用反斜杠来表示特殊的转义序列,因此如果要将文字反斜杠与正则表达式匹配,则需要使用\\

由于反斜杠在正则表达式中很常见,因此使用逐字符串通常是个好主意(参见Rahul的解决方案)。

答案 1 :(得分:2)

另一个解决方案您可以在字符串之前使用@以避免必须转义特殊字符,例如

string pattern = @".+\\";

CHECK MSDN