C#如何Regex.Replace"\ r \n"(实际字符,而不是换行符)

Skr*_*lin 14 .net c# regex string

我有一些可怕的文字,我正在使用几个c#正则表达式进行清理.令我难过的一个问题是文本中有许多'\ r \n'字符串,实际字符不是换行符.

我试过了:

content = Regex.Replace(content, "\\r\\n", "");
Run Code Online (Sandbox Code Playgroud)

和:

content = Regex.Replace(content, "\r\n", "");
Run Code Online (Sandbox Code Playgroud)

但它们都不起作用.最后我不得不使用:

content = content.Replace("\\r\\n", "\r\n");
Run Code Online (Sandbox Code Playgroud)

让项目完成,但不能在正则表达式中做到这一点让我烦恼.

Jen*_*ens 24

\r,并且\n在Regex中也有特殊含义,因此需要对反斜杠进行转义.然后,需要为c#字符串转义这些反斜杠,导致

content = Regex.Replace(content, "\\\\r\\\\n", ""); 
Run Code Online (Sandbox Code Playgroud)

要么

content = Regex.Replace(content, @"\\r\\n", ""); 
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 7

@"example"在C#中编写正则表达式时,养成使用逐字字符串文字()的习惯是个好主意.在这种情况下,你需要这个:

content = Regex.Replace(content, @"\\r\\n", "\r\n");
Run Code Online (Sandbox Code Playgroud)

否则你必须两次反转每个反斜杠:一次在C#字符串中转义它,然后第二次为正则表达式转义它们.因此,单个反斜杠将变为带有标准字符串文字的四个反斜杠.