Rei*_*l-- 3 regex line-endings
类似/相关,但不包括在内:
我主要在 .NET 堆栈中工作,我们希望(几乎)所有文件都是 CRLF。
在我看来,git 永远不应该编辑文件的内容,所以我和我的项目以及我同事的 git 设置是autocrlf=false(即as-is, as-is),请随意就其他问题进行辩论:)
偶尔有人会有错误的 git 设置,或者以其他方式意外地将 LF 引入到 git 存储库中的某些文件中,我想 grep 整个存储库以查找具有 LF 行结尾的文件,然后将它们修复为 CRLF,在逐个文件(以防万一,例如 bash 文件,遗憾的是应该是 LF)。
每次我需要这样做时,我都找不到相关的正则表达式,不得不重新从头开始解决。
所以这个问题的存在是为了记录正确的正则表达式。
正则表达式查找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