我的应用程序当前记录敏感信息,我需要屏蔽这些信息。
当前日志行如下所示:
<Unable to fetch user info combination of dob=[20001231] and pan=[ABCD1234Z]
但是应该改成类似的东西
<Unable to fetch user info combination of dob=******** and pan=********>
我试图用
掩盖这一点str.replaceAll("\\[.*?\\]", "*")
但它改为:
<Unable to fetch user info combination of dob=* and pan=*>
如何在方括号之间屏蔽字符时保留字符数?
最佳答案
可以一行完成:
str = str.replaceAll("(?=[^\\[]+]).", "*");
参见 live regex demo和/或 live Java demo .
这保留了方括号。要从结果中省略它们,请使用:
str = str.replaceAll("\\[?(?=[^\\[]*]).]?", "*");
参见 live Java demo .
关于java - 正则表达式用相同长度的符号替换所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41582456/