全部, 我对正则表达式并不是很好,并且试图找到用于测试它的正确工具,我使用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 :(得分: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
次。
答案 1 :(得分:0)
几乎正确,但您的日期和月份只能是一位数,如您的示例所示!斜杠也需要转义,否则它标志着正则表达式的结束。
尝试
/\d\d?\/\d\d?\/\d{4} \d\d:\d\d:\d\d/
答案 2 :(得分:0)
使用此选项以M/d/yyyy h:mm:ss
格式
\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{2}:\d{2}