这是什么正则表达式?

时间:2011-12-22 16:46:26

标签: java regex

我需要在密码显示在日志文件中之前屏蔽密码。

密码的格式为“password”:“pswd123”。它只是字母数字。屏蔽后,它将是“密码”:“ *

在我的自定义Pattern类中,我有以下reg表达式,但它没有被拾取。任何想法应该如何? THX

@Override
public String format(LoggingEvent event) {

    String msg = super.format(event);

    // regexp not being picked up
    msg = msg.replace("\"password\":\"[^\"]*", "password:\"***\"");

    return msg;
}

5 个答案:

答案 0 :(得分:4)

String.replace()需要CharSequence,而不是正则表达式。您可能正在寻找replaceAll()replaceFirst()

答案 1 :(得分:0)

使用.replaceFirst().replace()仅替换子字符串

答案 2 :(得分:0)

  1. replaceAll就是你要找的东西
  2. 如果你想要一个完整的匹配,那你就错过了regexp结束时的最后一个

答案 3 :(得分:0)

如果您希望它只显示3 *这很容易,如果您希望它为密码中的每个字符显示1 *,那就更难了。

Msg = Regex.Replace(Msg, "\"Password\":\"[^\"]+?\"", "\"Password\":\"***\"")

答案 4 :(得分:0)

您是否正在使用log4j或slf4j等任何日志库?这些库具有使用正则表达式“替换字符串”的功能。您可以通过更改日志记录配置文件来全局使用和应用它。您仍然需要提供一个正则表达式,使用正则表达式构建器实用程序(如http://myregexp.com/)并自行构建正则表达式。