sublime text 提取敏感信息需自定义正则规则,邮箱、手机号、身份证号等须用精准捕获组与负向断言,避免误匹配;复制前需括号捕获目标内容,并清理全角空格、换行符等干扰符。

Sublime Text 本身不识别“敏感信息”,所有提取都靠你定义规则 + 正则精准圈定范围;没写对捕获组或没处理换行符,复制出来的就是乱码或漏项。
怎么写正则匹配邮箱、手机号、身份证号这类敏感字段
直接用 \d{11} 会把订单号、时间戳全抓进来;\b 在中文日志里基本失效,别依赖它做边界判断。
- 手机号推荐:
(?(负向断言确保前后不是数字) - 邮箱用:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,},去掉\b更稳 - 身份证号(18位):
(?,注意 <code>X要大小写都覆盖 - 所有元字符如
.、+、[必须转义,比如搜api.key得写api\.key
为什么复制出来总是带前缀、空格或跨行错乱
根本原因:Sublime 默认只选中匹配片段本身,不是你想要的“干净字段”;而且 \s 不匹配全角空格(\u3000)、不间断空格(\u00A0)等常见干扰符。
- 想只取目标内容,正则必须用括号包住,例如:
"([^"]*)"或token:\s*["']([^"']*)["'] - 复制后粘贴,用
Ctrl+H→ 查找^[ \t\r\f\v\u3000\u00A0\u2000-\u200B\u2028\u2029]+|[ \t\r\f\v\u3000\u00A0\u2000-\u200B\u2028\u2029]+$→ 替换为空,清理首尾空白 - 若结果跨行断裂,说明原始日志混用了
\r\n和\n;先Ctrl+Shift+P→Convert Line Endings to Unix再操作
跨文件批量扫日志时,怎么避免卡死或漏匹配
Ctrl+Shift+F 是入口,但它不建索引,全靠实时扫描——路径填宽了、正则写糙了,就会卡在 99% 或静默跳过某些文件。
- Where 栏必须填具体范围,比如
./logs/**/*.log或*.json;留空 = 只搜当前文件 - 务必勾选右下角
.*(Regular Expression),否则^.*token.*$当普通字符串搜,根本不出结果 - 大文件(>50MB)慎用;可先
Ctrl+Shift+P→Set Syntax: Plain Text关闭语法高亮,减少解析负担 - 如果结果页里有路径前缀(如
app.log:42: token: abc123),粘贴后用^[^:]+:\d+:\s*替换为空,再删空行
Filter Lines 插件的 Keep Only Lines Matching 为什么总不生效
这个命令只在当前文件生效,且完全依赖前置状态:没成功选中匹配行,它就什么也不做,也不会报错。
- 必须先
Ctrl+F输入关键词 → 勾.*→ 点Find All→ 再按Ctrl+Shift+L(不是Ctrl+L)让光标落在每行匹配位置 - 确认多光标已激活(每行开头有闪烁竖线),再
Ctrl+Shift+P→ 输入Keep Only Lines Matching→ 回车 - 插件没装?
Ctrl+Shift+P输Install Package→ 找Filter Lines安装;装完重启命令面板才可见 - 它不支持负向逻辑,比如 “含 ERROR 但不含 success” —— 这种请切终端用
grep -E "ERROR" | grep -v "success"
真正麻烦的不是写正则,而是日志来源杂:容器 stdout 的 \n、Windows 导出的 \r\n、GBK 编码的中文日志,任何一个没对齐,^ 和 $ 就失效,整行匹配就崩。动手前先看右下角编码和换行符标识,比反复调正则更省时间。











