2012-01-27 32 views
3

全部, 正則表達式並嘗試找到正確的工具來測試此問題,我使用regexpal在線測試程序,似乎並不好收到此:如何使用正則表達式在日誌文件中查找日期時間模式

問題:我有一個帶有時間戳以下日誌文​​件:我在尋找一個正則表達式會看在日誌文件,找到的日期格式爲上市1/27/2012 10:47:50 AM : 0 : ContextManager.Initialize : 0 : Context Manager Initialization Started.

: 例上面如果它發現它,我會做額外的檢查,我已經在做。我只需要得到正則表達式來匹配上面提到的以下內容。

這裏是我的問候得到了這麼遠模式:

@"\d{2,2}/\d{2,2}/\d{4,4} \d{2,2}:\d{2,2}:\d{2,2}"; 

主要代碼:.NET C#

public void ValidateErrorHandlingMessagesInLogFile() 
{ 
System.Diagnostics.Debugger.Launch(); 
     //@"\d{2,2}/\d{2,2}/\d{4,4} \d{2,2}:\d{2,2}:\d{2,2}" 
     //^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$ 
     string Pattern = @"\d{2,2}/\d{2,2}/\d{4,4} \d{2,2}:\d{2,2}:\d{2,2}"; 
     ValidateUsingRegularExpression(Pattern, "engine"); 
} 

錯誤日誌:

1/27/2012 10:47:50 AM : 0 : ContextManager.Initialize : 0 : Context Manager Initialization Started. 
1/27/2012 10:47:59 AM : 0 : RuleEngine:538 : 4 : History definition configuration failure. Update history_definition config parameter to resolve errors reported. history definition configuration failure - Unknown field name [Lie_DosFrom] in entry [MEM_DOS] 
+0

所以....當您通過錯誤日誌與給定的正則表達式搜索,會發生什麼? – 2012-01-27 17:57:45

回答

1

我建議你REG圖案變化如下:

@"\d{1,2}/\d{1,2}/\d{4,4} \d{2}:\d{2}:\d{2}"; 

也就是說,有時日期/月份只包含1位數字,您的原始模式並不表示這一點。

通常,修飾符{m,n}表示此模式至少出現m次和最多n次;而{m}{m,m}表示此模式恰好出現在m次。

0

幾乎是正確的,但是你的一天和一個月可以只是一個數字,如你的例子所示!此外斜線需要逃脫,否則它標誌着正則表達式的結束。

嘗試

/\d\d?\/\d\d?\/\d{4} \d\d:\d\d:\d\d/ 
0

用這個來找到所有日期時間在M/d/yyyy h:mm:ss格式

\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{2}:\d{2}