\b\d{4}\b是最精准匹配“正好4位数字”的正则写法,通过单词边界\b确保前后非数字字母,\d{4}强制4位,避免误匹配子串或整行限制。

用\b\d{4}\b匹配固定位数数字
要精准捞出“正好4位”的数字(比如年份2023、ID 1001),不能靠肉眼扫或模糊搜,得用正则锚定长度。\b\d{4}\b是最稳的写法:开头\b确保前面不是字母或数字,结尾\b确保后面也不是,中间\d{4}强制匹配恰好4个数字字符。
常见错误现象:\d{4}不加\b会把12345里的1234、abc1234def里的1234都抓出来;^.{4}$只匹配整行4字符,完全不对路;输1234手动搜,漏掉所有其他4位数。
- 想匹配3–5位?改用
\b\d{3,5}\b - 要包含小数点(如99.99)?写成
\b\d{2}\.\d{2}\b,注意点号需转义 - 数字带逗号分隔(如1,234)?先关掉
word_separators或改用\b\d{1,3}(?:,\d{3})*\b,但实际中建议先替换掉逗号再搜
Find All后必须按Ctrl+D才能复制全部
Ctrl+F输入\b\d{4}\b并点Find All,只是高亮,光标仍停在第一个匹配处——此时Ctrl+C只会复制第一个数字。真正批量提取,必须立刻按Ctrl+D(Windows/Linux)或Cmd+D(macOS)把所有高亮项转为多选状态。
容易踩的坑:按了Alt+F3结果全选失败,因为Alt+F3是按当前选中文本字面量匹配,而Find All走的是正则引擎,两者逻辑不同;中途点击空白处取消了高亮,得重来;复制后数字顺序错乱,大概率是Ctrl+D前移动过光标,导致焦点偏移。
- 确认成功:所有目标数字周围出现虚线框(Sublime多选视觉反馈)
- 粘贴后默认换行分隔,如需逗号分隔,新建文件粘贴,再
Ctrl+H把\n替换成, - 超百个结果时卡顿?先用
Ctrl+Shift+F限定目录(如src/),再进单文件操作
中文环境里数字长度统计容易误判
中文文档常混用全角数字(1234)和半角(1234),\d只匹配半角ASCII数字,对全角无效。如果状态栏显示“Col 8”但你数出来是第6个字符,大概率有全角符号或不可见字符干扰列偏移。
解决路径很直接:先用Ctrl+Shift+P→ 输入show_panel→ 选console,粘贴运行view.rowcol(view.sel()[0].begin()),看真实字节位置;开启draw_white_space(Preferences → Settings加"draw_white_space": "all")暴露所有空格、制表符。
- 要同时匹配半角和全角数字?用
[\d\uff10-\uff19]{4},其中\uff10-\uff19是Unicode全角0–9范围 - 含中文单位(如“价格:1234元”)?改用
\b\d{4}(?=\u5143),\u5143是“元”的Unicode码点 - 统计总数别依赖人眼数:点
Find All后立刻点面板右上角Count按钮,底部显示Found 17 matches即为准数
全局搜固定长度数字得填对Where路径
Ctrl+Shift+F搜\b\d{4}\b前,必须确保左下角显示项目路径(如~/project/),否则面板灰显或结果为空。Where栏不能留空,也不能填错格式——填.搜整个项目,填src/只搜源码目录,填., -node_modules/排除干扰目录。
关键细节:Where不支持src/**/*.py这种glob语法(除非开启正则模式),日常用src/最稳;搜fetch会命中字符串和注释,但搜\b\d{4}\b纯数字基本无干扰,不用额外开Whole Word模式。
- 搜完必须
File → Save All(或Ctrl+K松开→Ctrl+B)才真正写入文件,仅点Replace All in Files不保存 - 替换前务必先点
Find All预览,确认列表里全是目标数字,避免误伤 - 大项目首次索引慢?右下角等
Indexing…消失再操作,否则部分新文件不参与扫描
\b依赖单词边界,而制表符、BOM、零宽空格会破坏它,导致看似“独立”的数字被漏掉。实际处理金融报文或日志时,先统一换行符为LF、关闭软换行、打开空白符显示,比调正则更省时间。











