[英]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.