^ 是最稳的行首匹配符,因它匹配换行符后的逻辑行首位置,不依赖缩进、光标或字符内容;只要换行符统一(如转为 Windows 格式),就能稳定命中每行开头。

直接用 Ctrl+H + 正则 ^ 替换,别碰列编辑——它只适合加固定长度序号或对齐补位,加前缀用它容易错行、漏空行、缩进崩坏。
为什么 ^ 是最稳的行首匹配符
正则里的 ^ 匹配的是“换行符之后、本行第一个可见字符之前”的逻辑位置,不是某个具体字符。它不依赖光标在哪、不看缩进有多少空格或 Tab,也不吃掉原有内容。只要文件换行符统一(建议先转成 Windows 格式:编辑 → 文档格式转换 → 转换为 Windows 格式),^ 就能稳定命中每一行开头。
常见错误现象:
- 点了“全部替换”但部分行没加上——大概率是没勾选“正则表达式”模式
- 加完发现某些行缩进歪了——因为新加的字符挤占了原本靠空格对齐的位置,比如原先是 4 空格缩进,你加了
//(2 字符),视觉上就少了 2 格
实操建议:
- 打开
Ctrl+H→ 勾选“正则表达式” → “查找目标”填^→ “替换为”填你要加的内容(如//)→ 点“全部替换” - 如果想保留缩进对齐,把“替换为”写成
//(两个硬空格)或//(三个),让总宽度回到原缩进量 - 不确定当前换行符类型?菜单栏
编辑 → 文档格式转换里能看到当前是Windows (CR LF)、Unix (LF)还是Mac (CR)
怎么跳过空行和纯空白行
默认 ^ 会匹配所有行首,包括空行。如果你只想给“有实际内容”的行加前缀(比如写代码注释、生成 SQL 插入语句),就得换匹配逻辑。
推荐用这个正则:
^(.+)$
它表示:行首开始,后面至少跟一个非换行符的字符,再以行尾结束。这样空行、只有空格或 Tab 的行就不会被命中。
实操建议:
- “查找目标”填
^(.+)$ - “替换为”填
// $1($1表示捕获组(.+)匹配到的整行内容) - 如果要加引号包裹,比如变成
"apple",就写成"$1" - 注意:
$1是 Notepad++ 的反向引用语法,不是;写错会直接显示文字$1而不是替换内容
特殊字符必须转义,否则会被当正则元字符处理
你要加的前缀里如果含 $、(、)、[、]、{、}、、^、.、*、+、?、|,不转义就会出错。比如想加 $var =,不转义的话 $ 被解释为“行尾”,结果啥也不加。
实操建议:
- 加
$→ 写成$ - 加
.→ 写成. - 加反斜杠
→ 写成\ - 不确定要不要转义?先把内容粘到“查找目标”框里试一下——如果 Notepad++ 报“无效正则”,说明里面有未转义的元字符
跨文件批量加前缀,别手动开一堆标签页
项目级整理时,比如给整个 src/ 下所有 .js 文件每行加 /* TODO */,用“在文件中替换”比逐个操作快得多。
实操建议:
- 菜单栏
搜索 → 在文件中替换(快捷键Ctrl+Shift+F) - “查找目标”填
^,“替换为”填/* TODO */ - “过滤器”填
*.js,“目录”选项目根路径 - 务必勾选“正则表达式”和“匹配大小写”(除非你明确要忽略大小写)
- 点“全部替换”前,先点“查找全部”预览命中行数,避免误操作
真正容易被忽略的点是:跨文件替换不会自动保存修改后的文件,必须手动按 Ctrl+S 或点击“全部保存”。关掉 Notepad++ 时若弹出“是否保存更改”,说明有文件还没落盘——这不是 bug,是它的安全机制。

















