【发布时间】:2021-12-27 16:22:54
【问题描述】:
我正在尝试使用正则表达式从 Outlook 电子邮件正文中的文本中提取某些子字符串。
这是我正在尝试使用的带有正则表达式的函数:
def EventDescription(emailbody):
regex = r'\d\d:\d\d\sDescription: (.*?)\s(?:_)'
substring = re.findall(regex, emailbody, re.DOTALL)
# return the matches
return substring
这是我尝试对其执行正则表达式的原始字符串:
***External Sender - This email is from an external sender.***
Date/Time Start:
2021-12-25 08:38
Anticipated Date/Time Restored:
2021-12-25 16:21
Duration:
7.72
Outage Type:
Forced Outage (FO)
Capacity De-Rate:
0.00
Maximo Work Orders:
Work Order #:NA00360131, Description: ALO1: ALO1_B002_P008.Inv016 - Inverter 16 is derating due to a broken tracking motor.
Created On: 2021-12-26 09:06
Description: Updated!
Inverter 16 is restored by site tech.
________________________________________
Date/Time Start:
2021-12-25 09:53
Anticipated Date/Time Restored:
2021-12-27 16:00
Duration:
54.12
Outage Type:
Forced Outage (FO)
Capacity De-Rate:
0.85
Maximo Work Orders:
Work Order #:NA00360131, Description: ALO1: ALO1_B002_P008.Inv016 - Inverter 16 is derating due to a broken tracking motor.
Created On: 2021-12-25 13:58
Description:
Updated ETR.
________________________________________
Date/Time Start:
2021-12-25 09:53
Anticipated Date/Time Restored:
2021-12-25 16:00
Duration:
6.12
Outage Type:
Forced Outage (FO)
Capacity De-Rate:
0.85
Maximo Work Orders:
Work Order #:NA00360131, Description: ALO1: ALO1_B002_P008.Inv016 - Inverter 16 is derating due to a broken tracking motor.
Created On: 2021-12-25 09:54
Description:
Inverter 16 tripped offline. No fault code available in FleetCon or SCADA. Site personnel informed.
________________________________________
但是当我尝试从列表“子字符串”中提取其中一个条目时,我收到“IndexError: list index out of range”错误。有什么建议吗?
【问题讨论】:
-
您的模式不匹配,因为在示例文本中没有匹配
\s_ -
你能把文本文字放在代码块中吗(没有语法高亮,又名
``` text)?我觉得问题源中的下划线分隔符是文本的一部分。然而它们目前由降价引擎解析,让我们感觉您正在尝试解析 3 个单独的字符串而不是 1 个大字符串。 -
我相信我已经修复了我的原始帖子以更好地显示原始字符串(如果不是,请告诉我)但你是正确的。当我将电子邮件正文复制/粘贴到文本编辑器中时,分隔符显示为下划线,这就是为什么我将它们作为原始正则表达式的一部分包含在内,以区分我尝试匹配的 3 个单独实例。
-
@RandomUser27 您的模式似乎有效吗?见ideone.com/hgCRDP