正则表达式找到并修复LF lineEndings到CRLF [重复]

问题描述 投票:0回答:1

相似/相关,但未涵盖:


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

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

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

每次我需要这样做时,我找不到相关的正则表达式,并且必须再次从头开始。

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

regex line-endings
1个回答
0
投票

正则表达式找到任何不属于LFCRLF

(?<!\r)\n

正则表达式找到任何不属于CRCRLF

\r(?!\n)

因此Regex找到任何非CRLF lineEnding:

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

您可以简单地用\r\n替换它以将它们全部修复为CRLFs。


这是使用“负面观察”功能:

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

和“负面前瞻”功能:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.