如何对以下正则表达式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;
但是我有两个斜线,我只想要一个斜线。
听起来您实际上根本不需要正则表达式。听起来你很可能只是想要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所指出的,对于如此简单的事情,正则表达式并不是最好的方法。