^和$是最稳的行首行尾匹配方式,需开启正则、禁用“.”匹配换行符、统一换行符、转义特殊字符,并排除BOM、编码混用、列编辑等干扰。

^ 是最稳的行首匹配方式,$ 是最稳的行尾匹配方式——只要换行符统一、正则模式开启、特殊字符转义得当,就能 100% 覆盖目标行,不漏不偏不崩。
为什么 ^ 替换加前缀比列编辑更可靠
列编辑按屏幕坐标硬插,遇到空行、缩进不齐、Tab/空格混用就错位;^ 匹配的是逻辑行首(换行符之后、内容之前),完全无视缩进和光标位置。
- 必须勾选「正则表达式」——否则
^当作字面量脱字符,搜不到任何东西 - 确保「. 匹配换行符」未勾选——否则
^行为异常,可能跳过某些行 - 混合换行符(
和)会导致部分行不命中,先用「编辑 → 文档格式转换 → 转换为 Windows 格式」归一 - 如果只想处理非空行,用
^(?=S)(正向先行断言)或^(.+)$+// $1,避免往空行里塞前缀
$ 加后缀时总多出空行?检查这三项设置
点「全部替换」后发现每行后面多了一空行,大概率是「匹配换行符」被误勾了。
- 「正则表达式」必须勾选——否则
$就是普通美元符号,不匹配行尾 - 「匹配换行符」必须取消勾选——勾上后
$只匹配或前的位置,替换内容若含换行就会叠加 - 别在「替换为」里手动写
或——Notepad++ 会自动保留原文换行,你只管填要追加的文本,比如;或// end
特殊字符不转义,^ 和 $ 都救不了你
你要加的前缀或后缀里只要含 $、.、、(、)、[、]、^、+、?、|,就必须转义,否则会被正则引擎解释。
- 想加
$var =→ 「替换为」填$var = - 想加
C:path→ 填C:\path(每个都要双写) - 想加
1.2.3→ 填1.2.3(点号不转义会匹配任意字符) - 不确定要不要转义?把内容粘到「查找目标」框里试一下:如果 Notepad++ 报「无效正则」,说明里面有未转义元字符
真正容易被忽略的底层干扰项
不是正则写错了,而是文件本身带了干扰结构:BOM、混合编码、不可见控制字符、自动换行开启、列编辑残留状态——这些都会让 ^ 和 $ 看似失效。
- 用「搜索 → 在文档中查找」分别输入
^和$,看高亮是否覆盖所有预期位置;若只高亮几行,说明存在 BOM 或控制字符 - GBK 文件夹着 UTF-8 BOM 时,
^可能跳过首行——先「编码 → 转为 UTF-8 无 BOM」再操作 - 状态栏显示「列编辑」或「自动换行」已启用?关掉再试,否则视觉与实际光标脱节
- 有隐藏的零宽空格、软连字符等?用「视图 → 显示符号 → 显示所有字符」打开看看

















