2012-01-27 58 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}