Notepad++无法直接提取IP并导出,但可用正则表达式配合“查找所有”高效筛选含IP的行;标准IPv4匹配式为\b(?:(?:25[0-5]|20-4|[01]?0-9?).){3}(?:25[0-5]|20-4|[01]?0-9?)\b,需勾选“匹配大小写”和“匹配整个单词”,禁用“.匹配换行符”。

Notepad++ 本身不支持直接“提取”IP地址并导出为新文件,但用正则表达式配合「查找所有」+ 手动复制,能高效定位和筛选含 IP 的行——这是最常用、最可靠的做法。
如何用正则匹配标准 IPv4 地址(含边界控制)
直接搜 \b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b 可精准匹配合法 IPv4,避免把 192.168.1000.1 或 999.999.999.999 这类非法串误抓。
- 必须勾选「匹配大小写」和「匹配整个单词」(即
\b边界生效) - 不要勾选「. 匹配换行符」,否则会跨行错配
- 如果日志中 IP 常带端口(如
192.168.1.1:8080),想连端口一起捕获,可改用:\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-4][0-9]|[01]?[0-9][0-9]?)\b(?::\d{1,5})? - Notepad++ 的正则引擎不支持
(?(? 这类条件断言,别硬套 PCRE 高级语法
为什么「查找全部」比「替换」更适合提取 IP
多数人想“提取”,其实是想把所有含 IP 的行拎出来单独看。用「查找 → 查找全部」(快捷键 Ctrl+Alt+F)会在下方弹出结果窗口,点击某条即可跳转到原文位置——这比用「替换为 」再删光非匹配行更安全、可逆。
- 「替换」操作一旦误点「全部替换」,原始日志可能被破坏,且无法批量还原
- 「查找全部」结果默认按文件顺序排列,天然保留上下文线索(比如某 IP 出现在 ERROR 行还是 INFO 行)
- 结果窗口支持双击跳转、右键复制整行,甚至拖选多行后
Ctrl+C一次性复制所有匹配行
日志里混着 IPv6 怎么办?Notepad++ 基本不建议硬刚
Notepad++ 自带的正则引擎对 IPv6 支持极弱:不支持重复组((?:[0-9a-f]{1,4}:){7}[0-9a-f]{1,4} 会漏掉压缩格式如 ::1 或 2001:db8::1),也难处理混合格式(如 2001:db8::192.168.1.1)。真要筛 IPv6,优先考虑外部工具:
- 用 PowerShell:运行
sls '\b(?:[0-9a-f]{1,4}:){2,7}[0-9a-f]{1,4}\b' your.log - 或导出日志到 VS Code,它内置的搜索支持更完整的 Unicode 正则
- 在 Notepad++ 中强行写 IPv6 正则,大概率漏匹配、假阳性高,调试成本远超收益
真正容易被忽略的是日志时间戳或前缀干扰:比如 [2024-05-20 10:23:45] WARN 192.168.1.100:3000 timeout,IP 被包裹在一堆字符里。这时正则必须靠 \b 和空格/括号等实际分隔符锚定,而不是依赖“看起来像 IP”的字符串——边界意识比模式复杂度重要得多。


















