You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python正则匹配日志中「星期 月份 日期 时间戳 年份」格式串

Python正则匹配完整日志时间格式方案

匹配完整时间格式的正则表达式

要匹配「星期 月份 日期 时间戳 年份」(如Mon Mar 16 13:05:14 2020)的完整格式,可以使用以下正则:

\b(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+(0?[1-9]|[12]\d|3[01])\s+([01]?\d|2[0-3]):([0-5]\d):([0-5]\d)\s+(19|20)\d{2}\b

正则各部分说明

  • (Mon|Tue|Wed|Thu|Fri|Sat|Sun):匹配所有英文星期缩写
  • (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec):匹配所有英文月份缩写
  • (0?[1-9]|[12]\d|3[01]):匹配1-31的日期,支持带前导零或不带
  • ([01]?\d|2[0-3]):([0-5]\d):([0-5]\d):匹配00:00:00到23:59:59的时分秒格式
  • (19|20)\d{2}:匹配19xx或20xx的年份

关联日志内容的实现思路

如果要提取时间戳对应的关联日志内容(比如时间所在行之后到日志边界的内容),可以结合正则和Python文件读取逻辑:

  1. 匹配到完整时间戳后,记录其位置
  2. 读取后续内容直到遇到日志边界(如示例中的EN 194或空行)
  3. 将时间戳与对应日志内容关联输出

示例代码片段:

import re

# 编译正则表达式
log_time_pattern = re.compile(r'\b(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+(0?[1-9]|[12]\d|3[01])\s+([01]?\d|2[0-3]):([0-5]\d):([0-5]\d)\s+(19|20)\d{2}\b')

with open('your_log_file.log', 'r') as log_file:
    log_content = log_file.read()
    # 查找所有匹配的时间戳
    time_matches = log_time_pattern.finditer(log_content)
    for match in time_matches:
        timestamp = match.group()
        # 提取时间戳之后的关联内容,直到遇到EN标记或日志结尾
        start_pos = match.end()
        end_pos = log_content.find('EN ', start_pos)
        if end_pos == -1:
            end_pos = len(log_content)
        related_log = log_content[start_pos:end_pos].strip()
        print(f"匹配到时间戳: {timestamp}")
        print(f"关联日志内容:\n{related_log}\n")

补充优化

  • 如果日志中星期/月份缩写存在大小写变体(如mon或MAR),可以在正则开头添加(?i)开启不区分大小写模式:(?i)\b(mon|tue|...)\b
  • 若日期前的空格数量不固定,可将\s+替换为\s*提升匹配灵活性

内容的提问来源于stack exchange,提问作者Praveen Kumar S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:40:29