あなたはこれを行うことができます:
final String pw = "pw:(abc)";
final String anon = pw.replaceAll("[^pw:]", "*");
System.out.println(pw);
System.out.println(anon);
結果は次のようになります。
pw:(abc)
pw:*****
編集: パスワードに p/w/: が含まれていると機能しません...修正を試みます..
編集#2:これは私が思っていたよりも難しいことが判明し、別のアプローチを取らなければなりませんでした:
final String input = "pw:(abc) something!";
Matcher matcher = Pattern.compile("\\(.*\\)").matcher(input);
if (matcher.find()) {
final String onlyPw = matcher.group();
final String stars = StringUtils.repeat("*", onlyPw.length());
System.out.println(input.replace(onlyPw, stars));
}
したがって、まず「({something})」で構成される文字列を見つけます。次に、この文字列の星の数で構成される文字列を作成します。次に、文字列を入力の星に置き換えます。
注:パスワードまたは ) の後のテキストに括弧が含まれている場合、これは機能しませんが、同様の正規表現が見つかるとは思えません..