【发布时间】:2019-07-16 13:47:10
【问题描述】:
我正在尝试解析 sendmail 日志。这些是分开的 - 'to' 和 'from' 在不同的行。我想匹配 'to' 以确定我们正在查看的行是 'to' 行,然后捕获尽可能多的电子邮件地址。有许多与此类似的帮助请求,但没有一个(我已经找到并且我保证我一直在寻找!)完全符合相同的情况。
我曾尝试在 Stack Overflow 上使用多种解决方案,但均未成功。问题是'to='不是可选的,它是一个要求。这可能是 PCRE 正则表达式吗?
到目前为止的正则表达式(仅匹配第一个电子邮件地址):
to\=((\<)?(?P<to>.+?\@.+?)(\>)?\,)
示例行:
Jul 16 13:35:05 mailserver sendmail[30892]: xxxxxxxxxxxxxx: to=user1@example.derp,user2@example.derp,user3@example.derp, delay=00:00:00, xdelay=00:00:00, mailer=smtp, pri=91785, relay=relay.example.derp [1.2.3.4], dsn=2.0.0, stat=Sent (<xxxxxxxxxxxxx.xxxxxxxxxxxx@mailserver.derp> Queued mail for delivery)
理想情况下,“to\=”之后的匹配将匹配现有的电子邮件地址,而不仅仅是第一个。如果有一个答案可以解决我错过/无法适应我的场景的问题 - 道歉。
【问题讨论】:
标签: regex pcre regex-group