2013-05-14 97 views
2

我使用正則表達式如下:神交解析與正則表達式

INT (?:[+-]?(?:[0-9]+)) 
VALUE ([0-9]+) 
SPACE \s* 
DATA .*? 
USERNAME [a-zA-Z0-9._-]+ 
YEAR (?>\d\d){1,2} 
MONTHNUM (?:0?[1-9]|1[0-2]) 
MONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9]) 
HOUR (?:2[0123]|[01]?[0-9]) 
MINUTE (?:[0-5][0-9]) 
SECOND (?:(?:[0-5][0-9]|60)) 
ISO8601_TIMEZONE (?:Z|[+-]%{HOUR}(?::?%{MINUTE})) 
TIMESTAMP %{YEAR:year}/%{MONTHNUM:monthnum}/%{MONTHDAY:monthday}-%{HOUR:hour}:%{MINUTE:minute}:%{SECOND:second}.%{VALUE:_second} 
MESSAGE %{DATA}ERR_SYSTEM%{DATA} 
PARSE_ERROR %{TIMESTAMP:ts}%{SPACE}%{USERNAME:type1}%{SPACE}%{USERNAME:slave}%{SPACE}%{USERNAME:type2}%{SPACE}[%{USERNAME:fibre1}/USERNAME:fibre2]%{SPACE}%{MESSAGE:message} 

現在我要解析這一行:

2013/05/13-05:19:167.76 INFO ABCD1 gamereporting
[0000000000000000/00000000000000000000] [GameReportingSlaveImpl:0x30bf7699a010] .processReport():對於ID錯誤 處理報告= 18014398509852207,類型= frostbite_m, 誤差= ERR_SYSTEM

我得到的解析後執行以下操作:

type1: INFO 
slave : abcd1 
type2: gamereportin 

現在輸入2總是錯過了'G'。爲什麼會發生?

有人可以爲上面的行提供正確的正則表達式嗎?

+0

我已經給了我所嘗試的..pls幫助\ – user2359303 2013-05-14 06:34:51

回答

10

您是使用Grok Debugger

你的Grok模式在哪裏?我在你的文章中沒有看到它。

我會用類似於下面的內容開始。由於您沒有了解如何保存數據,因此您必須在解決問題時添加該數據。

%{DATESTAMP}%{SPACE}%{LOGLEVEL}%{SPACE}%{WORD}%{SPACE}%{WORD}%{SPACE}(?<some_id>\[\d+\/\d+\]) 

使用Grok調試器 - 它會爲您節省大量時間。