Java多个正则表达式搜索

时间:2015-06-08 12:36:36

标签: java regex

我有一个像这样的字符串:

If message contains sensitive info like: {Password:123456, tmpPwd : tesgjadgj, TEMP_PASSWORD: kfnda}

我的模式应该查找特定字PasswordtmpPwdTEMP_PASSWORD

如何为此类搜索创建模式?

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找这些词之后的价值观。您需要设置捕获组以提取这些值,例如

String content = "If message contains sensitive info like: {Password:123456, tmpPwd : tesgjadgj, TEMP_PASSWORD: kfnda} ";
Pattern p = Pattern.compile("\\{Password\\s*:\\s*([^,]+)\\s*,\\s*tmpPwd\\s*:\\s*([^,]+)\\s*,\\s*TEMP_PASSWORD:\\s*([^,]+)\\s*\\}");
Matcher m = p.matcher(content);
while (m.find()) {
  System.out.println(m.group(1) + ", " + m.group(2) + ", " + m.group(3));
}

请参阅IDEONE demo

这将输出123456, tesgjadgj, kfnda

要确定是否存在任何子字符串,请使用contains方法:

System.out.println(content.contains("Password") || 
                       content.contains("tmpPwd") ||
                       content.contains("TEMP_PASSWORD"));

请参阅another demo

如果你想要一个关键字的正则表达式解决方案,这里是:

String str = "If message contains sensitive info like: {Password:123456, tmpPwd : tesgjadgj, TEMP_PASSWORD: kfnda} ";
Pattern ptrn = Pattern.compile("Password|tmpPwd|TEMP_PASSWORD");
Matcher m = ptrn.matcher(str);
while (m.find()) {
   System.out.println("Match found: " + m.group(0));
}

请参阅Demo 3

答案 1 :(得分:1)

最后我按照我的要求使用它。

  

private final static String censoredWords =   “PASSWORD | PWD(Ⅰ')”;

(?i)使其不区分大小写