正则替换添加前缀用^锚定行首、后缀用$锚定行尾,同时添加需用^(.*)$捕获整行并替换为【API】$1_v2;须选Regular expression模式且不勾选". matches newline",注意编码与BOM问题。

正则替换添加前缀:用 ^ 锚定行首
想给每行开头加固定文本(比如 【API】),关键不是写前缀本身,而是确保它只插在每行最前面。Notepad++ 的正则引擎默认不开启“多行模式”下的 ^ 行首匹配,必须手动勾选 . matches newline 下方的 Match case 和 Matches newlines 并不相关——真正起作用的是顶部的 Regular expression 模式 + 确保未勾选 . matches newline(否则 ^ 可能失效)。实际操作中,^ 在默认正则模式下就能正确匹配每行开头。
实操建议:
- 打开替换对话框(
Ctrl+H),选择Search Mode为Regular expression - 查找框填:
^ - 替换框填:
【API】(或其他你需要的前缀) - 点击
Replace All
注意:如果文件含 DOS(\r\n)和 Unix(\n)混排换行,^ 仍能正常工作;但若某行为空(只有换行符),它也会被匹配,结果变成前缀后紧跟换行——这通常符合预期。
正则替换添加后缀:用 $ 锚定行尾
$ 是行尾锚点,但它在 Notepad++ 中的行为有陷阱:默认情况下,它匹配的是行末(即换行符之前),而不是整个文件末尾。这意味着即使最后一行没换行符,$ 依然能匹配到它的结尾位置。
实操建议:
- 查找框填:
$ - 替换框填:
_v2(或其他后缀) - 务必确认搜索模式是
Regular expression,且未勾选. matches newline - 如果某行末尾已有空格或制表符,
$仍会匹配在它们之后——所以后缀会加在空白之后;如需排除这些,得改用\s*$查找并替换为空,再单独跑一次$替换
常见错误现象:Replace All 后发现部分行没加后缀——大概率是那些行末尾有不可见字符(比如全角空格、零宽空格),或者误用了 Extended 模式。
同时加前缀和后缀:一行替换完成,别嵌套操作
没必要分两次替换。用一个正则表达式就能捕获整行内容,再用分组引用重构。Notepad++ 支持 $1、$2 这样的替换引用语法,前提是查找表达式里有捕获组。
实操建议:
- 查找框填:
^(.*)$(^和$锚定,(.*)捕获整行不含换行符的内容) - 替换框填:
【API】$1_v2 - 确保启用
Regular expression模式 - 如果某行为空,
(.*)会匹配空字符串,$1就是空,结果仍是【API】_v2——是否接受该行为,取决于你的业务逻辑
性能影响很小,但要注意:如果文件超大(>10MB),多次预览 Find All in Current Document 可能卡顿;建议先在小样本验证逻辑。
容易被忽略的编码与特殊字符问题
Notepad++ 的正则替换对编码敏感。如果你的文件是 UTF-8 with BOM 或 GBK 编码,而替换内容含中文或符号(如 【】、→),务必确认当前文档编码与输入法/粘贴源一致,否则可能替换出乱码或失败。
实操建议:
- 替换前看右下角状态栏显示的编码(如
UTF-8),必要时通过Encoding → Convert to UTF-8统一 - 避免直接从网页或微信复制带格式的引号、破折号——它们可能是全角或 Unicode 特殊字符,正则里不会被当成普通字符处理
- 若替换后出现异常空行或错位,检查是否误开启了
. matches newline:它会让.匹配换行符,导致^(.*)$跨行捕获,破坏结构
最麻烦的情况不是不会写正则,而是编辑器底层把 BOM 当作普通字符参与了匹配——这时 ^ 实际匹配的位置会偏移,得先删 BOM 再操作。


















