$ 是 Notepad++ 中匹配行尾最可靠的正则锚点,定位每行内容结束、换行符开始前的位置,需勾选「正则表达式」且取消「. 匹配换行符」。

用 $ 正则匹配行尾最可靠
Notepad++ 里批量处理行尾字符,$ 是唯一稳定锚点——它定位的是“每行内容结束、换行符开始前”的逻辑位置,不依赖光标、不看缩进、不挑编码(UTF-8/GBK/ANSI 都认)。但必须同时满足两个条件:勾选「正则表达式」,且取消勾选「. 匹配换行符」。一旦勾上后者,$ 就退化成只认当前光标所在行的换行风格,混用 \r\n 和 \n 的文件会漏掉部分行。
加字符前先清空行尾空白,否则容易多出空格
原始行末可能有空格、Tab 或不可见控制符,直接 $ → ; 会得到 int x = 1 ; 这种带空格的分号。这不是正则错了,是输入脏了。稳妥做法分两步:
- 第一步:查找
\s*$,替换为空 → 吃掉所有行尾空白(\s包含空格、\t、\r、\n) - 第二步:查找
$,替换为你要加的内容,比如;或,
注意:\s* 中的 * 是贪婪匹配,一次扫净连续空白,比手动删或用菜单命令更彻底。
只处理非空行?别用 ^.+$,改用 ^.*$
^.+$ 会漏掉单字符行(如只有 a 的行),因为 + 要求至少一个字符;而 ^.*$ 中的 * 允许零个或多个,真正覆盖“有内容”的所有情况。操作时:
- 查找填
^.*$ - 替换填
$0;($0表示原整行,;紧贴追加) - 确保「. 匹配换行符」未勾选,否则
.会吞掉换行符,整篇变一行
如果还要跳过纯空白行(含空格或 Tab),可用 ^[^\r\n]*\S[^\r\n]*$,但日常建议先用「编辑 → 删除空行」手动清理更直观、可控。
替换后格式错乱?先关自动换行和列编辑
90% 的“只处理了部分行”或“多出空行”,不是正则问题,而是编辑器状态干扰:
- 关闭「视图 → 自动换行」——长行被视觉折行后,
$只在物理行尾生效,看起来像漏了几行 - 确认没处于「列编辑模式」——按住
Alt拖选会激活它,状态栏有提示,此时替换只作用于列块区域 - 替换前用「搜索 → 在文档中查找」输入
$测试:如果只高亮几行,说明文件含 BOM、混合编码(比如 GBK 文件里夹了 UTF-8 BOM),得先「编码 → 转为 UTF-8 无 BOM」再试
真正麻烦的是那些看不见的字符:文档末尾的零宽空格(\u200B)、软连字符(\u00AD)、孤立 \r 或 \n——$ 对它们完全无感,得靠手动定位(Ctrl+End → Ctrl+Shift+Left)或专用正则清除。











