正则表达式查找 LF lineEndings 并将其修复为 CRLF

Rei*_*l-- 3 regex line-endings

类似/相关,但不包括在内:


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

在我看来,git 永远不应该编辑文件的内容,所以我和我的项目以及我同事的 git 设置是autocrlf=false(即as-is, as-is),请随意就其他问题进行辩论:)

偶尔有人会有错误的 git 设置,或者以其他方式意外地将 LF 引入到 git 存储库中的某些文件中,我想 grep 整个存储库以查找具有 LF 行结尾的文件,然后将它们修复为 CRLF,在逐个文件(以防万一,例如 bash 文件,遗憾的是应该是 LF)。

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

所以这个问题的存在是为了记录正确的正则表达式。

Rei*_*l-- 7

正则表达式查找LF不属于 a 的任何内容CRLF

(?<!\r)\n

正则表达式查找CR不属于 a 的任何内容CRLF

\r(?!\n)

因此正则表达式可以找到任何CRLFlineEnding:

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

您只需将其替换为即可\r\n将它们全部修复为CRLFs。


这是使用“Negative Lookbehind”功能:

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

和“负向前瞻”功能:

a(?\!b)匹配后面没有跟“b”的“a”。

更多文档请参见: https: //www.regular-expressions.info/lookaround.html