PAT = re.compile(r'(1[3-9]\d{9}|0\d{2,3}-?\d{7,8}|[\w.+-]+@[\w-]+\.[\w.]+)')
print(PAT.sub('***', text))
正则只写了手机号 11 位,座机 010-12345678 和邮箱 zhangsan@corp.com 原样输出,扫描报告标了 37 处。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,号码规则按手机号写死,没覆盖带区号的座机、400 号码和国际号码。邮箱、护照号这些类型压根没进规则表。
「脱敏正则覆盖」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
处理上按这个顺序:按数据字典补全号码类型;邮箱和证件号单独写规则;用样本集回归 每类至少十条;上线前跑全量扫描比对。
改完只确认一件事:扫描报告里的 37 处降到 0 座机和邮箱都被替换。
