正则表达式查找并修复LF lineEndings到CRLF

时间:2019-04-02 13:01:25

标签: regex line-endings

类似/与之相关,但不包含于其中:


我主要在.NET堆栈中工作,我们希望(几乎)所有文件都是CRLF。

我认为git永远不要编辑文件的内容,因此我和我的项目以及同事的git设置为autocrlf=false(即as-is, as-is),请放心对some other question进行辩论:)

有时候有人会设置错误的git设置,或者以其他某种方式不小心将LF引入git repo中的某些文件中,我想对整个带有LF行尾的文件进行grep复制,然后将其修复为CRLF ,以逐个文件为基础(如果有bash文件,但应该不幸的是LF)。

每次我需要这样做时,我都找不到相关的正则表达式,而不得不重新从头开始解决。

因此存在这个问题来记录正确的正则表达式。

1 个答案:

答案 0 :(得分:0)

正则表达式以查找不属于LF的任何CRLF

(?<!\r)\n

正则表达式以查找不属于CR的任何CRLF

\r(?!\n)

因此正则表达式可以找到任何CRLF行结尾:

((?<!\r)\n|\r(?!\n))

您只需将其替换为\r\n即可将它们全部固定为CRLF


这使用了“负向后看”功能:

  

(?<\!a)b与前面没有“ a”的“ b”匹配。

和“负前行”功能:

  

a(?\!b)匹配不跟“ b”的“ a”。

此处的其他文档:https://www.regular-expressions.info/lookaround.html