如何使用正则表达式python删除两个字符之间的字符串

时间:2016-11-10 18:18:51

标签: python regex

我正在尝试清理一些日志,并希望从邮件中提取一般信息。我是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

任何人都可以帮我一个想法吗?非常感谢你!

3 个答案:

答案 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/