我有一个日志(log)文件,我想从中提取特定的日志(log)行. 我不熟悉正则表达式,但在下面的格式中取得了有限的成功. 我应该使用什么正则表达式来查找包含文本‘=START BACKUP DETAILS END==’AND‘=START BACKUP DETAILS END=’的日志(log)行

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
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))

推荐答案

下面是一个使用re(regexre)的Python示例:

import re

text = """\
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
"""

pat = r"(?<=START BACKUP DETAILS ===============\n).*?(?=\s*^[^\n]+START BACKUP DETAILS END)"

for block in re.findall(pat, text, flags=re.S | re.M):
    print("-" * 80)
    print(block)
    print("-" * 80)

打印:

--------------------------------------------------------------------------------
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
--------------------------------------------------------------------------------

Python相关问答推荐

按日期和组增量计算总价值

如何对行使用分段/部分.diff()或.pct_change()?

code _tkinter. Tcl错误:窗口路径名称错误.!按钮4"

从今天起的future 12个月内使用Python迭代

在Pandas框架中截短至固定数量的列

Pandas 在最近的日期合并,考虑到破产

比较2 PD.数组的令人惊讶的结果

Python 约束无法解决n皇后之谜

通过Selenium从页面获取所有H2元素

如何在虚拟Python环境中运行Python程序?

用NumPy优化a[i] = a[i-1]*b[i] + c[i]的迭代计算

当独立的网络调用不应该互相阻塞时,'

如何并行化/加速并行numba代码?

joblib:无法从父目录的另一个子文件夹加载转储模型

如何使用SentenceTransformers创建矢量嵌入?

如何从列表框中 Select 而不出错?

如何防止Pandas将索引标为周期?

循环浏览每个客户记录,以获取他们来自的第一个/最后一个渠道

polars:有效的方法来应用函数过滤列的字符串

将链中的矩阵乘法应用于多组值