用Python正则表达式从一个匹配项中打印出2个项目。

我试图从下面的行中提取过程ID和 “ERROR “一词。

July bad_process[12345]: ERROR

使用下面的代码,我可以打印过程id,但不能打印’ERROR’这个词。如果我返回0的索引,我得到这行。

[12345]: ERROR

如果我返回1的索引,我得到的只是进程ID。

123456

但返回索引2时,我没有得到’ERROR’字样。如何返回id和’ERROR’这个词?

def extract_pid(log_line):
    regex = r"\[(\d+)\]: [A-Z]+"
    result = re.search(regex, log_line)
    if result is None:
        return ""
    return result[1]

print(extract_pid(log))

解决方案:

你应该添加第二个捕获组,并使用 重新查找所有 来寻找所有的匹配。

re.search – 文档:

re.search(pattern, string, flags=0)

扫描字符串,寻找 首发地 其中正则表达式模式产生一个匹配,并返回一个对应的MatchObject实例。

import re

def extract_pid(log_line):
    regex = r"\[(\d+)\]: ([A-Z]+)"           # added grouping for 2nd group
    matches = re.findall(regex, log_line)
    return matches

print( extract_pid("""July bad_process[12345]: ERROR
July bad_process[42]: INFO""") ) 

输出。

[('12345', 'ERROR'), ('42', 'INFO')]

给TA打赏
共{{data.count}}人
人已打赏
解决方案

在Java枚举中使用lombok @Getter注解[重复]。

2022-4-22 9:00:11

解决方案

将一个多维数组初始化为一个类 c++中的成员

2022-4-22 9:00:13

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索