正则表达式搜索多个模式

时间:2020-06-27 09:34:18

标签: python-3.7

编辑了我的代码,尝试了另一种方法来获得所需的输出。 让我知道是否正确

import re

pattern1 = re.compile(r'\b(ERROR)')
pattern2 = re.compile(r'^\d+-\d+-\d+')
count =0

with open('sample.txt',encoding='utf-8')as f:
for i in f:
    a= re.search(pattern1,i)
    if a:
        count = count + 1
        b = re.search(pattern2,i)
        if b:
            print(b.group(),':',a.group())

 print('Total ERROR in the logfile:',count)



***output:***
2019-11-22 : ERROR 
2019-11-22 : ERROR 
2019-11-20 : ERROR 
Total ERROR in the logfile: 3

 

log.txt 2019-11-22 16:46:46,985-主要-信息-开始等待文件 2019-11-22 16:46:56,645-主要-信息-开始:尝试1检查新文件 2019-11-22 16:47:46,488-主要-信息-成功:从云存储下载文件:返回

2019-11-22 16:48:48,180-主要-错误-失败:正在等待文件 2019-11-22 16:49:17,918-主要-信息-开始等待文件 2019-11-22 16:49:32,160-主要-信息-开始:尝试1检查新文件 2019-11-22 16:49:39,329-主要-警告-成功:从云存储下载文件:

2019-11-22 16:53:30,706-主要-警告-开始等待文件 2019-11-22 16:53:48,180-主要-错误-失败:等待文件文件

2019-11-20 10:00:00,121-主要-错误-失败:正在等待文件中的文件

1 个答案:

答案 0 :(得分:0)

用于匹配错误行的模式是:

^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.*\bERROR\b.*$

您更新的脚本:

pattern1 = re.compile(r'^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.*\bERROR\b.*$')
count = 0

with open('log.txt',encoding='utf-8')as f:
for i in f:
    a = re.search(pattern1, i)
    if a:
        count = count + 1