我正在尝试清理一些日志,并希望从邮件中提取一般信息。我是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
任何人都可以帮我一个想法吗?非常感谢你!
答案 0 :(得分:2)
尝试这样的事情:
clean_special2=re.sub(r'(?<=^Report\b).*(?=\bstarted)',' ',text)
说明:(?<=...)
是一个积极的外观,例如字符串必须与该组的内容匹配,但不会被捕获,因此不会被替换。另一方面也有同样的事情,前瞻性(?=...)
。 \b
是一个单词边界,因此这些单词之间的所有内容都将匹配。由于这也将削减空白,替换是一个空白。
答案 1 :(得分:1)
我不知道python语法,但我确信这个正则表达式可以帮助你匹配你的字符串
/ ^报告\ W +([\ w&amp;。#@%^!〜 - ] +)\ W +开始/ m *
python字符串可能就像这样 text =&#34;报告ZSIM_RANDOM_DURATION_已开始&#34 ;;
<强> clean_special2 =应用re.sub(R&#39; ^报告\ W +([\ W&安培;#@%^〜 - !] +)\ W +开始&#39; ,&#39;&#39;,文字)*
答案 2 :(得分:1)
这应该......&#39; ^报告\ [^ \] * \开始&#39;
正则表达式是黑魔法,只在必要时使用它。在线工具使编写更容易:https://regex101.com/