如何对以下正则表达式c#中的反斜杠进行转义

本文关键字:转义 正则表达式 | 更新日期: 2023-09-27 18:25:45

这是我的函数,我试图替换文件中的字符串,但c#告诉我的regex格式错误。有什么想法吗?

public void function(string fileName, string path) {
    string pathToAmmend = @"$SERVERROOT'pathpath";
    string newPath = @"$SERVERROOT'" + path;
    File.WriteAllText(fileName, Regex.Replace(File.ReadAllText(fileName), pathToAmmend, newPath));            
    ....
}

如果我将字符串更改为:,它就会工作

string pathToAmmend = @"$SERVERROOT''pathpath";
string newPath = @"$SERVERROOT''" + path;

但是我有两个斜线,我只想要一个斜线。

如何对以下正则表达式c#中的反斜杠进行转义

听起来您实际上根本不需要正则表达式。听起来你很可能只是想要string.Replace:

// Split into three statements for clarity.
string input = File.ReadAllText(fileName);
string output = input.Replace(pathToAmend, newPath);
File.WriteAllText(output);

只有当您真正尝试匹配模式时,才使用正则表达式。

'是正则表达式中的一个特殊转义字符。您必须对其进行转义,以便将其解释为文字',而不是转义序列。$也是一个特殊的字符(一个结束锚),所以您也需要逃离它。

string pathToAmmend = @"'$SERVERROOT''pathpath";

使用@创建逐字逐句的字符串只意味着您不必为了C#编译器而转义'。您仍然需要在正则表达式模式中转义的'。如果没有逐字逐句的字符串,这将是:

string pathToAmmend = "''$SERVERROOT''''pathpath";

当然,正如Jon Skeet所指出的,对于如此简单的事情,正则表达式并不是最好的方法。