🏕️关于替换空行的正则表达式解释
2023-7-13
| 2023-7-16
0  |  0 分钟
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(旧的Mac系统), $ 都能够匹配到行尾
 

总结:

我测试了一下, $ 是一个 0 长度字符, 在 CR LF 前面.不可见, 0 长度.
CR 表示 \r , win 下用的.
LF 表示 \n , 三平台都有.
总结来说, 一个人感知的换行是有如下 2-3 部分顺序组成.
  1. 0 长度字符 $
  1. CR\r [win 下才有]
  1. LF 或者 \n .
 
^\s*(?=$\r?)\n:
  1. 0 长度字符 ^ 表示一行开始
  1. \s* 空白字符有没有都行
  1. (?=$\r?) 后向匹配内容,不消耗字符串内容. 我还没想通这里:
    1. \r? 是说若 win 下, 可以有个 \r 字符. 合理
    2. 带为什么用后向匹配,而不是直接匹配? notepad++ 测试 ^.?xy=.?$\r?\n 也是可以替换行的的.
  1. \n 最后的LF 字符.
 
notion image

遗留问题&思考

 
技术折腾
  • 工具
  • docker 添加 sudo 权限openwrt 配置模版的路径.config 路径
    目录