爲了匹配這些序列中的模式,我正在努力使用正則表達式將日誌文件拆分爲對數序列。 日誌格式是:java正則表達式:在標記之間捕獲多行序列
timestamp fieldA fieldB fieldn log message1
timestamp fieldA fieldB fieldn log message2
log message2bis
timestamp fieldA fieldB fieldn log message3
時間戳正則表達式是已知的。
我想提取時間戳之間的每個日誌序列(可能多行)。我想保留時間戳。
我想在同一時間保持行的確切數量。
我需要的是如何裝飾時間戳記模式,以便按日誌順序分割我的日誌文件。我不能將整個文件拆分爲字符串,因爲在CharBuffer中提供內容的文件
這裏是將要使用此日誌序列匹配樣品的方法:
private void matches(File f, CharBuffer cb) {
Matcher sequenceBreak = sequencePattern.matcher(cb); // sequence matcher
int lines = 1;
int sequences = 0;
while (sequenceBreak.find()) {
sequences++;
String sequence = sequenceBreak.group();
if (filter.accept(sequence)) {
System.out.println(f + ":" + lines + ":" + sequence);
}
//count lines
Matcher lineBreak = LINE_PATTERN.matcher(sequence);
while (lineBreak.find()) {
lines++;
}
if (sequenceBreak.end() == cb.limit()) {
break;
}
}
}
感謝Alan,我很高興您已經理解了我的問題,因爲即使對我自己的眼睛來說它看起來也很模糊...... 您是否建議我已經放棄正則表達式贊成掃描器,代碼更簡單,工作正常。 – Guillaume 2010-03-26 09:29:43