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

如何使用正则表达式提取日志文件中指定内容的日志行?

提取包含特定文本的日志行的正则表达式方案

我有一个日志文件,想要从中提取特定的日志行。我不熟悉正则表达式,之前尝试的格式仅取得了有限效果。请问应使用什么正则表达式来查找包含文本= START BACKUP DETAILS END ==和= START BACKUP DETAILS END =的日志行?

日志示例

06/11/2023 13:41 LocalFileCacheHashDb filterExisting, items contains 577 items
06/11/2023 13:41 LocalFileCacheHashDb < filterExisting(15)
06/11/2023 13:41 BackUpLauncher =============== START BACKUP DETAILS ===============
06/11/2023 13:41 BackUpLauncher startBackup called with 68
06/11/2023 13:41 BackUpLauncher startBackup called with isScheduledSync = true
06/11/2023 13:41 BackUpLauncher startBackup called with isApplicationForeground = false
06/11/2023 13:41 BackUpLauncher =============== START BACKUP DETAILS END ===============
06/11/2023 13:41 BackUpHelper prepareSyncData
06/11/2023 13:42 AssetScannerSdkManager getAndFilterPhotoVideoFolderItem, descriptionItemList contains 570 items
06/11/2023 13:42 AssetScannerSdkManager getLocalMusic, descriptionItemList contains 1 items
06/11/2023 13:42 AssetScannerSdkManager getLocalDocs, descriptionItemList contains 6 items
06/11/2023 13:42 AssetScannerSdkManager getAssets, isRestore = false, descriptionItemList contains 577 items

现有Python代码示例

import re
with open('cached_logs.txt', 'r') as text_file:
    text_file=text_file.read()
    pattern = r'([M-c])'
    matches = re.findall(pattern, text_file)
with open('cacheOut.txt', 'w') as out:
    out.write('\n'.join(matches))

解决方案

正则表达式说明

针对你的需求,有两种正则方案可选:

  1. 严格匹配指定文本:精准匹配包含= START BACKUP DETAILS END =或= START BACKUP DETAILS END ==的行

    ^.*= START BACKUP DETAILS END ={1,2}.*$
    
    • ^匹配行开头,$匹配行结尾
    • .*匹配任意字符(除换行)的任意次数
    • ={1,2}表示匹配1个或2个等号,覆盖你指定的两种情况
  2. 灵活适配日志场景:从日志示例看,目标行前后有大量等号,若只需匹配包含核心字符串START BACKUP DETAILS END的行,可简化为:

    ^.*START BACKUP DETAILS END.*$
    

    这个表达式能匹配所有包含该核心文本的日志行,适用性更强。

修改后的Python代码

替换原有正则逻辑,改用按行读取的方式更高效:

import re

# 预编译正则模式,这里选用灵活适配的版本
pattern = re.compile(r'^.*START BACKUP DETAILS END.*$')

matches = []
with open('cached_logs.txt', 'r') as text_file:
    # 逐行读取,避免大文件占用过多内存
    for line in text_file:
        if pattern.match(line):
            matches.append(line.strip())

with open('cacheOut.txt', 'w') as out:
    out.write('\n'.join(matches))

代码说明

  • re.compile预编译正则,提升多次匹配的效率
  • 逐行读取日志,处理大文件更友好
  • strip()去除每行末尾的换行符,输出格式更整洁

内容的提问来源于stack exchange,提问作者Eamon M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:38:21