用Python正则表达式从一个匹配项中打印出2个项目。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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(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')]
以上是关于用Python正则表达式从一个匹配项中打印出2个项目。的主要内容,如果未能解决你的问题,请参考以下文章