表示取出"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);}