使用正则表达式替换所有 \r 后面没有跟随 \n 的实例为 \r\n

8
如何使用正则表达式将不跟随\n\r替换为\r\n

问题

我正在创建一个Windows文本编辑器,其中换行符被添加为\r。因此,当我在记事本中打开文件时,它们不会被识别为换行符。

尝试过的方法

我已经尝试了到处寻找(Google、stackoverflow等),但是一直没有找到我需要的东西。

到目前为止,我尝试过的所有方法都可以完成第一次操作,但即使后面跟着\n,它们也会不必要地替换掉\r

参考表达式:

"\r(?!^\n)", "\r\n"

1
简化了一些措辞,调整了顺序和格式,删除了一些多余的措辞。 - Kraang Prime
1个回答

7

您需要使用

\r(?!\n)

即,从您的\r(?!^\n)表达式中删除字符串/行修饰符^\r将匹配回车符,并且(?!\n)如果其右侧紧接着一个LF,则不匹配。

这是C#演示:

var s = "Line1\rLine2\r\nLine3";
var res = Regex.Replace(s, "\r(?!\n)", "\r\n");
Console.WriteLine(res.Replace("\r","CR").Replace("\n","LF\n"));
// => Line1CRLF
//    Line2CRLF
//    Line3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接