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 座机和邮箱都被替换。

作者 9823189