$匹配行尾需关闭“匹配换行符”,否则会插入换行符前导致空行;混用换行格式时应先统一为UNIX或Windows格式;加标点前须先用\s*$清除行尾空白。

$ 能直接匹配行尾位置,但必须勾选「正则表达式」且不勾「匹配换行符」,否则无效或出空行。
为什么 $ 替换没反应或加出空行
常见错误是勾了「匹配换行符」——这时 $ 只匹配 \r\n 或 \n 前那个点,而你填的替换内容(比如 ;)会插在换行符前面,结果变成 ;\r\n,看起来像多了一行。更隐蔽的问题是文件混用了换行格式(比如 Git 拉下来的文件有 \n,本地编辑过又存成 \r\n),$ 在默认设置下虽能跨平台识别,但一旦勾选「匹配换行符」,它就只认当前光标所在行的换行类型,导致部分行漏掉。
- 确认「匹配换行符」未勾选(绝大多数场景必须关掉)
- 用「编辑 → 文档格式转换 → 转为 UNIX 格式」或「转为 Windows 格式」统一换行符
- 避免在「替换为」里手动写
\r\n或\n—— Notepad++ 会原样保留原有换行
想只给非空行末尾加内容,正则怎么写
空行本质是只有换行符的行,所以得排除它。^.*$ 看似能匹配非空行,但前提是「. 匹配换行符」没勾选,否则 . 会吞掉换行符,导致整段被当成一行处理。日常够用的写法就是 ^.*$ 配合关闭该选项;如果还要跳过纯空白行(含空格、Tab),可用 ^[^\r\n]*\S[^\r\n]*$,但多数时候先手动删空行更省事。
- 确保「. 匹配换行符」未勾选
- 查找内容填:
^.*$,替换为:$0, // end($0表示原行全部内容) - 若要加标点+空格,先清理再加:第一步查
\s*$替换为空,第二步查$替换为,
加逗号/分号时为什么总有多余空格
因为原始行尾可能已有空格或 Tab,直接在「替换为」里写 , 会导致 xxx , 这种双空格。正则本身不“感知”语义,它只是机械替换位置,所以不能靠猜,得显式清除。
- 先执行一次:查找
\s*$,替换为(空)——吃掉所有行尾空白 - 再执行:查找
$,替换为,或;或,(这次加空格才安全) -
\s*中的*是贪婪匹配,会一次性拿走所有连续空白,比手动删干净
最易忽略的是「匹配换行符」开关状态——它不显眼,但一开就让 $ 行为突变;另外,别指望 Notepad++ 自动识别“逻辑行尾”,它只认物理换行符位置,所以混用换行格式时,务必先统一文档格式再操作。

















