【发布时间】:2015-11-21 07:58:07
【问题描述】:
我这里有这个示例日志文件:
LOG FILE:
Jan 1 22:54:17 drop %LOGSOURCE% >eth1 rule: 7; rule_uid: {C1336766-9489-4049-9817-50584D83A245};
Jan 1 22:54:22 drop %LOGSOURCE% >eth1 rule: 7; rule_uid: {C1336766-9489-4049-9817-50584D83A245};
Jan 1 22:54:23 drop %LOGSOURCE% >eth1 rule: 7; rule_uid: {C1336766-9489-4049-9817-50584D83A245};
Jan 1 22:54:41 drop %LOGSOURCE% >eth1 rule: 7; rule_uid: {C1336766-9489-4049-9817-50584D83A245};
默认分隔符是分号 (;),我想用该分隔符分隔时间戳和“drop”,以及带有“%LOGSOURCE%”的“drop”。我跑了代码(见下文,成功但没有得到我预期的结果。整个代码是插入分隔符。)
我的代码: 公共类 LogParser {
List<String> temps = new ArrayList<String>();
// while loop
while (inFile1.hasNext()) {
// find next line
String token1 = inFile1.next();
temps.add(token1);
}
inFile1.close();
String[] tempsArray = temps.toArray(new String[0]);
for (String s : tempsArray) {
Pattern p = Pattern.compile("([a-zA-Z]{3}\\s\\d{1,2}\\s\\d{2}:\\d{2}:\\d{2})(\\s)(drop)");
Matcher matcher = p.matcher(s);
while (matcher.find()) {
//System.out.println(matcher.group(0));
}
//System.out.println(s);
}
【问题讨论】:
-
谷歌:
split with delimiter in java -
到目前为止,您尝试了哪些方法,在使用它时遇到了哪些问题?另一方面,看看你的用户名,也许这是问你的错误问题