java - 正则表达式用相同长度的符号替换所有匹配项

标签 java regex

我的应用程序当前记录敏感信息,我需要屏蔽这些信息。

当前日志行如下所示:

<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/

相关文章:

java - 配置数据源以将 Spring Security 集成到现有 Spring 项目中

java - Jsp页面以Https和Http方式打开

java - 如何在 Java 中比较字符串?

regex - R:环顾四周

java - 将生成器设置为特定值

java - 字节码生成的访问对象与 GenerationMethodAccessor

javascript - 需要 javascript 正则表达式来表示金额和小数以及百分比增加

C# 正则表达式搜索给出 false

php - 使用正则表达式在 PHP 中匹配 URL 模式

regex - 确定文件是否包含特定字符串的最快方法是什么?