type
status
date
Jul 13, 2023 10:53 AM
slug
summary
tags
category
icon
password
引言:
问题现象说明
替换空行用这个表达式,对各种换行符号有点混淆.理清楚.
^\s*(?=\r?$)\n
^\s*(?=$\r?)\n
解决过程
$
是一个元字符,表示一行文本的结束。无论行尾字符是:
\n
(Unix/Linux),\r\n
(Windows)\r
$
总结:
我测试了一下,
$
是一个 0 长度字符, 在 CR
LF
前面.不可见, 0 长度.CR
表示 \r
, win 下用的.LF
表示 \n
, 三平台都有.总结来说, 一个人感知的换行是有如下 2-3 部分顺序组成.
- 0 长度字符
$
CR
或\r
[win 下才有]
LF
或者\n
.
对
^\s*(?=$\r?)\n
:- 0 长度字符
^
表示一行开始
\s*
空白字符有没有都行
(?=$\r?)
后向匹配内容,不消耗字符串内容. 我还没想通这里:\r?
是说若 win 下, 可以有个\r
字符. 合理- 带为什么用后向匹配,而不是直接匹配? notepad++ 测试
^.
?xy=.
?$\r?\n
也是可以替换行的的.
\n
最后的LF
字符.
