Потратив на это пару часов, нашел это решение.
private static final String REGEX_FILTER_KEY = "[:]+((?=\\[)\\[[^]]*\\]|(?=\\{)\\{[^\\}]*\\}|\\\"[^\"]*\\\"|(\\d+(\\.\\d+)?))";
List<String> redactKeys = Collections.unmodifiableList(Arrays.asList("username", "password", "userId"));
private String redact(@NonNull String responseString) {
for (String key : redactingKeys) {
Matcher matcher = Pattern.compile(String.format("\"%s\"%s", key, REGEX_FILTER_KEY)).matcher(responseString);
if (matcher.find() && matcher.group(1) != null) {
responseString = responseString.replace(matcher.group(1), "**********");
}
}
return responseString;
}