gpt4 book ai didi

python - 在 Python 中使用正则表达式匹配多种可能性

转载 作者:太空宇宙 更新时间:2023-11-03 15:48:31 25 4
gpt4 key购买 nike

我正在尝试使用 Python 处理日志文件并提取每个条目的日期、时间和日志消息并将其存储在字典列表中。为此,我使用 re.search()group() 方法。
问题是日期/时间采用各种格式,例如。

dd/mm/yy, hh:mm AM - logs
dd/mm/yyyy, hh:mm a.m. - logs
dd/mm/yy HH:mm - logs

我的程序看起来像这样:

import re
infile=open('logfile.txt', 'r')
loglist=[]
logdict={}
for aline in infile.readlines():
line=re.search(r'^(\d?\d/\d?\d/\d\d), (\d?\d:\d?\d \w\w) - (.*?)',aline)
if line:
logdict['date'] = line.group(1)
logdict['time'] = line.group(2)
logdict['logmsg'] = line.group(3)
loglist.append(logdict)

但是,这仅匹配上述格式中的第一种。
我如何才能匹配其他格式并维护组?或者有更简单的方法吗?

最佳答案

您可以在模式后使用 {m,n} 来指示 mn 之间可以有重复。因此使用 \d{1,2} 来表示 1 或 2 位数字。您可以使用交替来表示多种可能性,例如\d{2}|\d{4} 表示 2 位或 4 位年份。

所以正则表达式可以是:

^(\d{1,2}/\d{1,2}/(?:\d{2}|\d{4})),? (\d{1,2}:\d{1,2}(?: [AaPp]\.?[Mm]\.?)?) - (.*)'

关于python - 在 Python 中使用正则表达式匹配多种可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41543793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com