类似/与之相关,但不包含于其中:
我主要在.NET堆栈中工作,我们希望(几乎)所有文件都是CRLF。
我认为git永远不要编辑文件的内容,因此我和我的项目以及同事的git设置为autocrlf=false
(即as-is, as-is
),请放心对some other question进行辩论:)
有时候有人会设置错误的git设置,或者以其他某种方式不小心将LF引入git repo中的某些文件中,我想对整个带有LF行尾的文件进行grep复制,然后将其修复为CRLF ,以逐个文件为基础(如果有bash文件,但应该不幸的是LF)。
每次我需要这样做时,我都找不到相关的正则表达式,而不得不重新从头开始解决。
因此存在这个问题来记录正确的正则表达式。
答案 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