相似/相关,但未涵盖:
我主要在.NET堆栈中工作,我们希望(几乎)所有文件都是CRLF。
在我看来,git永远不应该编辑文件的内容,所以我和我的项目和我的同事的git设置是autocrlf=false
(即as-is, as-is
),随意在some other question上进行辩论:)
偶尔有人会有糟糕的git设置,或者以某种其他方式意外地将LF引入git repo中的某些文件中,我想在整个存储库中查找具有LF行结尾的文件,然后将它们修复为CRLF,在逐个文件的基础(如果有,例如bash文件应该遗憾地是LF)。
每次我需要这样做时,我找不到相关的正则表达式,并且必须再次从头开始。
所以存在这个问题来记录正确的正则表达式。
正则表达式找到任何不属于LF
的CRLF
:
(?<!\r)\n
正则表达式找到任何不属于CR
的CRLF
:
\r(?!\n)
因此Regex找到任何非CRLF
lineEnding:
((?<!\r)\n|\r(?!\n))
您可以简单地用\r\n
替换它以将它们全部修复为CRLF
s。
这是使用“负面观察”功能:
(?<\!a)b
匹配一个前面没有“a”的“b”。
和“负面前瞻”功能:
a(?\!b)
匹配“a”,后面没有“b”。