繁体   English   中英

如何使用正则表达式在日志文件中查找日期时间模式

[英]How to find date time pattern in log file using Regular Expression

所有,我不是很好的正则表达式,并试图找到正确的工具来测试这个,我使用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]

我建议你的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次。

几乎是正确的,但您的日期和月份可以只是一个数字,如您的示例所示! 斜杠也需要转义,否则它标志着正则表达式的结束。

尝试

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

使用此选项以M/d/yyyy h:mm:ss格式查找所有日期时间

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM