C#Regex-在另一个字符连续出现之前添加一次字符

C#Regex-在另一个字符连续出现之前添加一次字符,c#,regex,C#,Regex,我想在连续出现\n(如果尚未出现)之前预先编写\r一次 正则表达式的结果应返回此结果 string myString = "This\r\nis a\r\n\nstring that\r\n\n has many\r\nlines" 关于如何完成这件事有什么想法吗 谢谢查找不以\r开头的\n序列 Regex.Replace(myString, @"([^\r\n]|^)(\n)+", "$1\r$2"); 由于第一组(除\r或\n以外的任何字符或字符串开头)将是匹配的一部分,因此我们需要重写

我想在连续出现
\n
(如果尚未出现)之前预先编写
\r
一次

正则表达式的结果应返回此结果

string myString = "This\r\nis a\r\n\nstring that\r\n\n has many\r\nlines"
关于如何完成这件事有什么想法吗


谢谢

查找不以
\r
开头的
\n
序列

Regex.Replace(myString, @"([^\r\n]|^)(\n)+", "$1\r$2");
由于第一组(除\r或\n以外的任何字符或字符串开头)将是匹配的一部分,因此我们需要重写它(
$1
),然后将
\r
前置到第二组(序列
\n
-s)

请验证我的答案,尤其是当
\n
是字符串中的第一个字符时,因为我不确定
$1
的行为

例如,替换为:

\n \r\n\n abc\n\r\n \nx\ny\r\n
应导致:

\r\n \r\n\n abc\r\n\r\n \r\nx\r\ny\r\n

所以您想保持\r\n\n转换为\r\n\r\n的兴趣?是的。我只想\r在所有连续的\n之前。我在运行此程序时遇到以下错误,“{”parsing\”(([^\\r\\n]|^)(\\n)+\“-不够”)。“}”Ye,有一个拼写错误,不需要第一个左括号。我编辑了答案。
\r\n \r\n\n abc\r\n\r\n \r\nx\r\ny\r\n