结论:用^.{4}安全删除每行开头固定的4位编号,必须锚定行首^且确认长度统一;若存在换行符或bom干扰,改用^[^\r\n]{4}更稳妥。

直接说结论:用正则 ^.{N} 或 ^[^\r\n]{N} 匹配行首固定个数字符,替换为空即可;但必须确认 N 是统一的,否则会误删或截断。
怎么安全匹配行首固定长度的字符
比如每行开头都有 4 位人工添加的编号(0001 、0002 ),你想全删掉。不能盲目搜 \d{4}——它可能命中注释里的 line 1234 或字符串中的 "id":5678。
- 必须锚定行首:
^不可省,否则会匹配行中任意位置 - 用
.{4}最简,但前提是每行前 4 个字符**确定是目标且无换行干扰** - 更稳妥写法是
^[^\r\n]{4},避免.在某些模式下意外吞掉换行符 - 如果前缀含空格/制表符不固定,改用
^[^\r\n]*?+ 具体模式(如^\d+\.\s*)更准
为什么 ^.{N} 有时删得不对
常见错误是没注意文本里混用了不同换行符,或行末有隐藏 BOM/零宽字符,导致 ^ 锚点失效。
- Windows 文件用
\r\n,Unix 用\n,Notepad++ 默认能识别,但若文件编码异常(如 UTF-8 with BOM),首行^可能对不齐 - 复制粘贴来的文本可能带零宽空格(
\u200B)、软连字符(\u00AD),.无法匹配它们,^.{N}就会少删一个位置 - 解决办法:先用
^.{0,10}+ 「全部查找」预览,看高亮是否严格落在你要删的区域
删行首字符时怎么保留缩进对齐
如果删掉的是编号但后面跟着不规则空格或 Tab,直接删 ^.{N} 会导致后续内容左移错乱。这时要一并规范化空白。
- 查找目标:
^.{N}\s*(删前缀+其后所有空白) - 替换为:
(一个空格)或\t(一个 Tab),视你想要的对齐风格而定 - 若原空白是混合的(空格+Tab),
\s*能统吃;但别用\s+,否则纯空行会被跳过 - 注意:不要勾选「. 匹配换行符」,否则
\s*可能跨行吞掉下一行首字符
批量删行首但避开某些行怎么办
工程中常遇到“只删代码行前缀,不删注释或空行”。正则本身不支持条件跳过,得靠双重否定或分步处理。
- 想保留以
//或/*开头的行?查:^(?!(?:\/\/|\/\*)).{N}—— 这是负向先行断言,Notepad++ 8.5+ 支持 - 老版本不支持
(?!...),就得分两步:先用^.{N}替换为@@@DELETE@@@,再查^@@@DELETE@@@\s*(?=(?:\/\/|\/\*))替换为空,最后删所有@@@DELETE@@@ - 更实际的做法:用「标记」功能——Ctrl+F → 正则搜
^.{N}→ 勾「标记全部」→ 点「搜索 → 标记 → 删除已标记行」,但这是删整行,不是删行首,慎用
最易被忽略的一点:Notepad++ 的正则引擎对 Unicode 字符支持有限,像中文标点、emoji 或全角数字(如「1234」)不会被 \d 或 . 匹配到,得显式写 [0-9] 或 [\uFF10-\uFF19]。动手前先确认你面对的是 ASCII 还是混合编码。











