我正在从一个巨大的日志文件中提取感兴趣的日志行。 请注意,我根本不熟悉python。
日志行全部从时间戳开始,如
09:00:00.648711172 [Info ] [....]
我希望将它与特定的时间段相匹配,比如从09:00到09:30,我想出了以下解决方案:
r'^(09:[012][0-9]|30)
问题是这不适用于一般案例,比如说我们获得start_time
和end_time
,我该如何进行匹配?
答案 0 :(得分:2)
如果不能为不同的start_time
和end_time
构建正则表达式模式,您可以捕获并解析时间并将其与实际时间范围进行比较:
import datetime
start_time = datetime.time(9, 00)
end_time = datetime.time(9, 30)
log_line = "09:00:00.648711172 [Info ] [....]"
log_time = datetime.datetime.strptime(log_line[:log_line.find(".")], "%H:%M:%S").time()
if start_time <= log_time <= end_time:
print("Woo, we've found a match: {}".format(log_line))
else:
print("Close, but no cigar with the line: {}".format(log_line))
答案 1 :(得分:0)
在这种情况下,只有正则表达式对你没什么帮助。相反,您可以尝试使用正则表达式获取小时,分钟和秒的值,然后进行一些计算(类似Bundle args = getArguments();
Incidencia incidencia = args.getParcelable("yourKey");
)以确定它是否在范围内。
答案 2 :(得分:0)
正则表达式匹配日期从09:00:00到09:30:00的任何一个条目,并且不匹配任何其他条目:
log_regex = re.compile(r'09:(([0-2]/d{1}):([0-5]/d{1}|60))|30:00')
您希望匹配此正则表达式的所有匹配项:
log_regex.findAll(your_string_variable)