2016-07-28 12 views
-1

Мне нужно проанализировать файл журнала в java. Файлы журнала содержат информацию об обработке времени и событиях. Строки, которые меня интересуют, а также информация внутри, выделены жирным шрифтом в примере записи строки журнала. Для следующих один мне нужно извлечь, то Время обработки и (200 с кодом события):Каким будет регулярное выражение java для анализа следующего файла журнала

15:04:53 Камера 192.168.1.112 -> Рамка 2: Время обработки 13.000000ms 15 : 04: 53 -> Кадр 2: Камера 192.168.1.111: newImage (T) errorID (0) eventID (200) noOfBoundingBox (0), bbinfo(), noCentroid (0), centroidInfo (0,0,0% ; /), imageReturned (F)

16:04:53 Камера 192.168.1.111 -> Рамка 2: Время обработки 14.000000ms 16:04:53 -> Кадр 2: Камера 192.168.1.111: newImage (T) errorID (0) eventID (201) noOfBoundingBox (0), bbinfo(), noCentroid (0) , centroidInfo (0,0,0%; /), imageReturned (F)

у меня возникли проблемы, чтобы создать шаблон регулярного выражения и как я могу получить время обработки и идентификатор события для конкретного IP в файле журнала ?

+4

Что вы пытаетесь и что сделали это выходом? – rgoliveira

ответ

1

Вы можете извлечь его, выполнив следующий код.

public static void stackOverFlowRegex(){ 
     String text = "15:04:53 Camera 192.168.1.112 -> Frame 2: Processing Time 13.000000ms 15:04:53 -> Frame 2 : Camera 192.168.1.111: newImage(T) errorID(0) eventID(200) noOfBoundingBox(0),bbinfo(),noCentroid(0) , centroidInfo(0,0,0%;/), imageReturned(F) 16:04:53 Camera 192.168.1.111 -> Frame 2: Processing Time 14.000000ms 16:04:53 -> Frame 2 : Camera 192.168.1.111: newImage(T) errorID(0) eventID(201) noOfBoundingBox(0),bbinfo(),noCentroid(0) , centroidInfo(0,0,0%;/), imageReturned(F)"; 

     Pattern pattern = Pattern.compile("(Processing Time(.*?)ms)(.*?)(eventID\\((.*?)\\))");//(Processing Time(.*?)ms)+(eventID\\((.*?)\\)) 
     Matcher matcher = pattern.matcher(text); 
     while(matcher.find()){ 
      System.out.format("%s => %s\n", matcher.group(1), matcher.group(4)); 

     } 
    } 
+0

Спасибо .. это результат, который мне нужен ^^ – lighthing

+0

@lighthing на самом деле люди принимают ответ, если он правильный :) –

0
public class RegEx { 

    public static String testdata = "15:04:53 Camera 192.168.1.112 -> Frame 2: Processing Time 13.000000ms 15:04:53 -> Frame 2 : Camera 192.168.1.111: newImage(T) errorID(0) eventID(200) noOfBoundingBox(0),bbinfo(),noCentroid(0) , centroidInfo(0,0,0%;/), imageReturned(F)"; 

    public static void main(String[] args) { 
     System.out.println(testdata); 
     String processingTime = testdata.replaceFirst(".*Processing Time ", ""); 
     processingTime = processingTime.replaceFirst(" .*", ""); 
     System.out.println(processingTime); 
     String eventId = testdata.replaceFirst(".*eventID\\(", ""); 
     eventId = eventId.replaceFirst("\\).*", ""); 
     System.out.println(eventId);   
    } 

} 
+0

Спасибо! это мне очень помогает ^^ – lighthing