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

如何使用正则表达式python删除两个字符之间的字符串,python,regex,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

我正在尝试清理一些日志,并希望从消息中提取一般信息。我是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
Report started
clean_special2=re.sub(r'(?<=^Report\b).*(?=\bstarted)',' ',text)
我尝试使用一些代码:

clean_special2=re.sub(r'^[Report] [^1-9] [started]','',text)
但我认为这段代码将删除所有行,但我想保持像Report…这样的格式。所以我只想删除中间的作业名。 我希望我的结果是这样的:

 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
Report started
clean_special2=re.sub(r'(?<=^Report\b).*(?=\bstarted)',' ',text)

有人能帮我想出个主意吗?多谢各位

试试这样的方法:

 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
Report started
clean_special2=re.sub(r'(?<=^Report\b).*(?=\bstarted)',' ',text)

clean_special2=re.sub(r'(?我不知道python语法,但我可以肯定这个regexp可以帮助您匹配字符串

/^报告\W+([\W&.#@%^!~-]+)\W+已启动/m*

python字符串可能如下所示
text=“报告ZSIM\u随机\u持续时间\u开始”


clean\u special2=re.sub(r'^Report\W+([\W&.\#@%^!~-]+)\W+started','',text)*这应该可以…“^Report\[^]*\started”


Regex是一种黑魔法,只能在必要时使用它。在线工具使编写变得更容易:

我不确定我是否理解。按照您描述的方式,您不能只编写一个具有相同行数的新文件,每个行都包含
已启动的报告
?您还没有说明为什么需要Regex。对不起,我想我没有说清楚。还有一些其他消息,如“登录成功”、“RFC/CPIC登录成功”因此,我只显示我要清理的消息。请参阅OP的评论,我认为这不够笼统。@sobek我阅读了评论,但我认为它足够笼统:它只会删除报告作业,但在应用于每条消息时不会触及任何其他消息。非常感谢您的帮助和解释!这对我的案例是有效的。但我不能我仍然有一些困惑:1.喜欢什么^用什么(?@zihanmeng是的,确切地说,
^
要求匹配必须在行首。因此,如果您有一个类似于
外部报告的字符串,那么它将不匹配。感谢您的帮助并让我知道此站点!@zihanmeng正在阅读此文章,我仍然不确定我是否正确理解了您的问题。您的答案在哪里您提到的“其他消息”出现在它们自己的行中,或者在同一字符串中的某个地方?一个包含这些“其他消息”的示例“您需要保留的内容会很有用。@technicalbloke Regex根本不是黑魔法……它是一个功能强大的工具,您应该在适当的情况下使用它,也就是说,对于文本上的大多数非琐碎的模式匹配任务。@Lucero,所以这是一个您应该谨慎使用的强大工具,有点像黑魔法?;)