我正在尝试清理一些日志,并希望从消息中提取常规信息。我是python的新手,昨天刚学习了正则表达式,现在遇到了问题。
我的讯息如下:
Report ZSIM_RANDOM_DURATION_ started
Report ZSIM_SYSTEM_ACTIVITY started
Report /BDL/TASK_SCHEDULER started
Report ZSIM_JOB_CREATE started
Report RSBTCRTE started
Report SAPMSSY started
Report RSRZLLG_ACTUAL started
Report RSRZLLG started
Report RGWMON_SEND_NILIST started
我尝试一些代码:
clean_special2=re.sub(r'^[Report] [^1-9] [started]','',text)
但是我认为这段代码将删除所有行,但是我想保留Report ..... Started这样的格式。因此,我只想删除中间的作业名称。
我希望我的结果如下所示:
Report started
任何人都可以帮助我提出一个想法?非常感谢你!
最佳答案
尝试这样的事情:
clean_special2=re.sub(r'(?<=^Report\b).*(?=\bstarted)',' ',text)
说明:
(?<=...)
是正向后面的,例如该字符串必须与该组的内容匹配,但不会被捕获,因此不会被替换。另一面的内容相同,正向(?=...)
表示正。 \b
是一个单词边界,因此这些单词之间的所有内容都将匹配。由于这也会修剪空白,因此替换为单个空白。