我有一个像这样的字符串:
If message contains sensitive info like: {Password:123456, tmpPwd : tesgjadgj, TEMP_PASSWORD: kfnda}
我的模式应该查找特定字Password
或tmpPwd
或TEMP_PASSWORD
。
如何为此类搜索创建模式?
答案 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)
使其不区分大小写