【问题标题】:Regex to replace all instances of \r not followed by \n with \r\n正则表达式将所有 \r 实例替换为 \r\n
【发布时间】:2023-03-21 21:59:01
【问题描述】:

\r 后面没有使用正则表达式\n 时,我如何将\r 替换为\r\n

问题

我在 Windows 上创建的文本编辑器出现问题,因为换行符被添加为 \r。因此,当我在记事本中打开文件时,它们不会被读取为换行符。

我尝试了什么

我已经尝试过到处寻找(谷歌、stackoverflow 等),但一直找不到适合我所追求的特别的东西。

到目前为止,我尝试过的所有操作都完成了我在第一次之后所做的事情,但它会继续不必要地替换 \r,即使它们后面跟着 \n

供参考,这是表达式:

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

【问题讨论】:

  • 清理了一些用词并调整了顺序和格式,删除了一些多余的措辞。

标签: c# regex string replace


【解决方案1】:

你需要使用

\r(?!\n)

也就是说,从\r(?!^\n) 表达式中删除^ 字符串/行开头修饰符。 \r 将匹配回车,如果在其右侧有一个 LF,(?!\n) 将匹配失败。

一个C# demo:

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

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 2020-05-24
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    相关资源
    最近更新 更多