正则表达式 - 如何解析正文电子邮件

时间:2017-12-12 17:30:09

标签: regex email parsing

我需要使用正则表达式从正文电子邮件中提取所有数据信息(以便在输出列中获取“通知类型”,“服务”,“主机”,“地址”,“状态”,“日期/时间”, “附加信息”)。 电子邮件的内容如下:

Notification Type: AAAAAA

Service: Percentile: Interface vlanxxxx
Host: Oslo.group.xxx
Address: 99.200.XX.YYY
State: OK

Date/Time: Sun Sept 10 22:53:32 CEST 2017

Additional Info:

OK - Interface 400 = Average IN: 140.626Gbps(50.50%), Average OUT: 519.888Mbps(80.962%)

请有人帮帮我吗? 此致

2 个答案:

答案 0 :(得分:1)

代码

See regex in use here

^[^:]*:\s*(.+)

结果

输入

Notification Type: AAAAAA

Service: Percentile: Interface vlanxxxx
Host: Oslo.group.xxx
Address: 99.200.XX.YYY
State: OK

Date/Time: Sun Sept 10 22:53:32 CEST 2017

Additional Info:

OK - Interface 400 = Average IN: 140.626Gbps(50.50%), Average OUT: 519.888Mbps(80.962%)

输出

以下结果是捕获组1的内容

AAAAAA
Percentile: Interface vlanxxxx
Oslo.group.xxx
99.200.XX.YYY
OK
Sun Sept 10 22:53:32 CEST 2017
OK - Interface 400 = Average IN: 140.626Gbps(50.50%), Average OUT: 519.888Mbps(80.962%)

说明

  • ^在行首处断言位置
  • [^:]*匹配除:以外的任何字符
  • :按字面意思匹配
  • \s*匹配任意数量的空白字符
  • (.+)将一个或多个角色捕获到捕获组1

答案 1 :(得分:0)

通知类型

^Notification Type: (.*)$

服务

^Service: (.*)$

主机

^Host: (.*)$

地址

^Address: (.*)$

国家

^State: (.*)$

日期/时间

^Date/Time: (.*)$

<小时/> 最后一行是没有接受正则表达式的行。假设到处都是m m ultiline)标志。如果您不想使用它,请将$字符替换为[\r\n]

^字符与该行的开头匹配。