key value解析

@Test
public void logparseTest() {
    String desStr = "<190>May 18 11:20:10 2016 HLJ_S12508_1_FW %%10FILTER/6/ZONE_DP_FLT_EXECUTION_TCP_LOG(l): -DEV_TYPE=SECPATH-PN=210231A0H6010C000002; " +
            "srcZoneName(1034)=serveruntrust;" +
            "destZoneName(1035)=servertrust;" +
            "rule_ID(1070)=90;" +
            "policyActType(1071)=denied;" +
            "protType(1001)=TCP(6);" +
            "srcIPAddr(1017)=10.167.77.99;" +
            "destIPAddr(1019)=10.166.5.70;" +
            "srcPortNum(1018)=49362;" +
            "destPortNum(1020)=1521;" +
            "beginTime_e(1013)=05182016112009;" +
            "endTime_e(1014)=05182016112009;"+
            "Content=[HTTP_SQL_注入攻击(1&1)]red_begin URL::1=1%20or%202=2 red_end ;" +
            "HOST=web.chacuo.net;" +
            "URL=/formatxml?1=1%20or%202=2;REF=;";

    /**  注释       <190>May              May 18 11:20:10 2016      HLJ_S12508_1_FW       10FILTER(供应商)  6(严重程度)    ZONE_DP_FLT_EXECUTION_TCP_LOG(l):(助记码)**/
    String regex = "<[\\S]+>(?<timestamp>\\S+\\s+\\S+\\s+\\S+\\s+\\S+\\s+)\\S+ \\%\\%(?<vendor>[^/]*)/(?<severity>[^/]*)/(?<MNEMONIC>[^:]*): -DEV_TYPE=SECPATH-PN=210231A0H6010C000002; (?<message>.*)";
    System.out.println(desStr);
    System.out.println(regex);
    Pattern mPattern = Pattern.compile(regex);
    Matcher mMatcher = mPattern.matcher(desStr);
    String kvSeparator = "=";
    String keyRegular = "[^=;]+";
    String valueRegular = "[^;]+";
    String regep = keyRegular + kvSeparator + valueRegular;
    while (mMatcher.find()) {
        System.out.println("timestamp" + "=" + mMatcher.group("timestamp"));
        System.out.println("vendor" + "=" + mMatcher.group("vendor"));
        System.out.println("severity" + "=" + mMatcher.group("severity"));
        System.out.println("MNEMONIC" + "=" + mMatcher.group("MNEMONIC"));
        System.out.println("message" + "=" + mMatcher.group("message"));
        String message = mMatcher.group("message");
        Pattern pattern = Pattern.compile(regep);
        Matcher matcher = pattern.matcher(message);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值