表示取出"EventType":" 到 "之间的字符串,非贪婪匹配
(?<="EventType":").*?(?=")
如果后面"也换成字符串的话,就把?=换成?<=即可
例子如下:
public String getPattern(String str,String pattern){
Pattern compile = Pattern.compile("(?<=\""+pattern+"\":\").*?(?=\")", Pattern.CASE_INSENSITIVE);
Matcher matcher = compile.matcher(str);
boolean b = matcher.find();
if (b){
return matcher.group(0);
}else {
return "";
}
}
public static void main(String[] args) {
String str = "{\"Header\":{\"DcdGuid\":\"${#DCDGuid}\",\"DevGuid\":\"${#DevGuid}\",\"Sid\":\"${#Sid}\",\"Timestamp\":\"${#Timestamp}\"},\"Data\":{\"AppName\":\"\",\"EventType\":\"LoginOper\",\"FunClassTag\":\"Login\",\"FunClassValue\":\"failure\",\"DiscoverTime\":\"${#RealTime}\",\"Details\":{\"LoginType\":\"-\",\"LoginSourceIp\":\"${1.3.6.1.4.1.2011.5.25.207.1.2.1.1.2.34}\",\"User\":\"${1.3.6.1.4.1.2011.5.25.207.1.2.1.1.4.34}\",\"Password\":\"-\"}}}";
test test = new test();
String eventType = test.getPattern(str,"EventType");
String funClassTag = test.getPattern(str,"FunClassTag");
String funClassValue = test.getPattern(str,"FunClassValue");
System.out.println(eventType);
System.out.println(funClassTag);
System.out.println(funClassValue);
}