Notepad++删除指定数字需用字面匹配或边界正则:关闭正则直接替换最安全;用\b42\b防子串误删;多数字用\b(42|100|999)\b;三位数用\b\d{3}\b;删后需清理空格和空行;保留浮点数等须用零宽断言。

Notepad++ 删除指定数字(不是所有数字)必须用字面匹配或精确范围
想删掉文本里出现的 42、100 或 999 这类具体数字,而不是所有数字,就不能用 \d——它会无差别扫光全部 0–9。你得把目标数字当普通字符串来匹配,或者用带边界的正则确保不误伤。
常见错误现象:输 42 却没勾选「正则表达式」模式,结果什么都没删;或者开了正则但没加边界,导致 1428 里的 42 也被删了,变成 18。
- 纯字面替换最稳:关闭「正则表达式」模式,直接在「查找目标」填
42,「替换为」留空 → 安全、快速、零学习成本 - 要防“子串误删”(比如只删独立的
42,不碰142或420):开正则,用\b42\b(\b是单词边界,Notepad++ 支持) - 删多个不同数字(如
42、100、999):正则写成\b(42|100|999)\b,注意括号和竖线都要原样输入 - 如果数字前后可能是标点或换行符(非字母/数字),
\b有时不够用,可改用(?(Notepad++ 8.5+ 支持这种否定环视)
删掉某几位数的数字(比如所有三位数)
目标是删掉所有形如 100–999 的整数,但保留 99 和 1000,这时不能靠人工列,得用正则限定长度。
性能影响:用 \b\d{3}\b 比逐个写 100|101|...|999 快得多,也更可靠;但如果文本里有大量数字,且你只要删其中一部分,建议先「查找全部」预览匹配行数,避免误删注释或版本号。
-
\b\d{3}\b:匹配独立的三位数字,\b确保前后不是数字或字母 - 若要包含负三位数(如
-123),改用\b-?\d{3}\b,但注意-12和-1234不会匹配 - 别用
^[0-9]{3}$:这是匹配整行只有三位数字,场景完全不同 - 中文语境下若有全角数字(如「123」),
\d不匹配,得显式写[0-9]{3}并确保编码一致(通常是 UTF-8)
为什么 \d+ 替换后留下空格或空行?这不是 bug
删掉数字本身不会连带删它前后的空格、制表符或换行符。所以 abc 45 def → abc def(中间两个空格),而一行只有 123 的,会变成空行。
容易踩的坑:有人以为这是正则写错了,反复调参数,其实这是设计行为。真正要清理干净,得补步骤。
- 删完数字后,再跑一次
[ \t]+→ 替换为空,合并多余空白 - 删空行:用
^\s*$\r?\n,并勾选「. 匹配换行符」,否则跨行匹配失败 - 顺序不能颠倒:必须先删数字,再删空格,否则
[ \t]+可能把数字和空格一起吞掉(如45→ 直接变空,但你想留) - 如果文件含混合缩进(空格+Tab),建议先开启「显示空格与制表符」确认真实布局,再决定用
[ \t]还是分开处理
删数字但想保住浮点数、负数、科学计数法?零宽断言是唯一出路
默认 \d 只动 0–9,-12.34e5 会被删成 --..e。这不是正则缺陷,是你没告诉它“哪些数字该留”。这时候必须用上下文判断,而 Notepad++ 对零宽断言支持有限,得挑能用的写法。
兼容性警告:旧版 Notepad++((? 这类写法,报错或静默失效;优先试 \b\d+\b,再考虑升级。
- 只删独立整数(放过
-12、3.14、1e5):(? - 解释:
(? 确保前面不是小数点、数字、e/E;<code>(?![.\deE])同理管后面 - 负号单独处理:如果还要保留
-12,就得改成(?,但注意 <code>--12也会被匹配 - 实际效果取决于文本结构:如果浮点数总带小数点(如
0.0)、科学计数法总有e,这个模式就足够;如果存在123.(小数点后空格),(?!\.)就拦不住,得加空格分支


















