必须先确认“正则表达式”模式已启用,否则^、$等符号按字面匹配且不报错;右下角须显示“正则表达式”,未启用则所有操作静默失效;空行、bom、换行符格式等环境因素常导致失败。

必须先确认“正则表达式”模式已启用
Notepad++ 默认不启用正则匹配,^ 和 $ 在“普通”或“扩展”模式下就是字面字符,不会定位行首行尾——点了“全部替换”也毫无反应,还不报错。打开 Ctrl+H 后,务必检查窗口右下角状态栏是否显示 正则表达式;若不是,手动单选该选项,关闭再重开一次更稳妥。
用 ^ 和 $ 分两步加符号最可靠
想给每行加双引号,别写 ^(.*)$ → "$1" 这种单次包裹方案——它对空行也生效,生成 "",且无法灵活控制头尾符号不同(比如 SQL 的 IN ('xxx'))。实际更稳的做法是分两次:
- 第一次:查找
$,替换为你要的尾符,例如') - 第二次:查找
^,替换为你要的首符,例如IN ('
顺序不能反:如果先加首符,再加尾符,第二步会把刚加的首符也包进尾符里(如变成 IN (')xxx'))。
空行、BOM、换行符这些细节决定成败
常见失败不是正则写错,而是环境干扰:
-
^不匹配空行开头的换行符,但$会匹配空行末尾——这是正常行为,不是 bug - 文件带 BOM(UTF-8 with BOM)时,
^可能错位,建议先另存为UTF-8 无 BOM - 别在查找框里写
\r\n或\n来匹配换行——Notepad++ 的^/$天然按逻辑行工作,硬写换行符反而破坏结构 - 若文本混用 Windows / Unix 换行,先统一为一种(菜单 → 编辑 → 行操作 → 转换为 Windows 格式)
想跳过空行?改用 ^([^ ]+)$ 或 ^(\S.*)$
默认 ^ 和 $ 对所有行都生效,包括纯空行。如果只处理有内容的行(比如导出 CSV 字段),得靠捕获组过滤:
-
^([^ ]+)$:匹配至少含一个非空格字符的行(允许中间有空格,如hello world) -
^(\S.*)$:匹配以非空白字符开头的行(更宽松,兼容制表符等) - 替换时仍用
"$1",别用$0——Notepad++ 不支持$0
真正容易被忽略的,是“空行是否该参与替换”这个判断——它不取决于正则能力,而取决于你的数据用途。加引号导 SQL 时漏掉空行是好事;生成配置项列表时跳过空行却可能断格式。动手前先扫一眼原始数据结构。











