Grok模式匹配电子邮件地址

时间:2016-07-12 17:39:24

标签: pattern-matching logstash-grok grok

我在模式文件中定义了以下Grok模式

HOSTNAME \b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
EMAILLOCALPART [a-zA-Z][a-zA-Z0-9_.+-=:]+
EMAILADDRESS %{EMAILLOCALPART}@%{HOSTNAME}

由于某些原因,当使用以下输入对http://grokdebug.herokuapp.com/运行时,这不会编译,它只返回“编译错误”

Node1\Spam.log.2016-05-03   171 1540699703 03/May/2016 00:00:01 +0000  INFO  [http-bio-0.0.0.0-8001-exec-20429] EngagementServiceImpl logDefault 192.168.1.122 77777777777777777 DAMIEN@DAMIEN.COM > initiated Stuff: 8675309, provider: 8675309, member: 8675309

我是否有某些原因导致编译错误/这是否与该日志行中的电子邮件相匹配?

谢谢,

1 个答案:

答案 0 :(得分:2)

您可以使用

(?<email>[a-zA-Z0-9_.+=:-]+@[0-9A-Za-z][0-9A-Za-z-]{0,62}(?:\.(?:[0-9A-Za-z][0-‌​9A-Za-z-]{0,62}))*)

或:

(?<email>[\w.+=:-]+@[0-9A-Za-z][0-9A-Za-z-]{0,62}(?:[.](?:[0-9A-Za-z][0-9A-Za-z‌​-]{0,62}))*)

他们在grokdebug.herokuapp.com工作。 顺便说一下,https://github.com/rgevaert/grok-patterns/blob/master/grok.d/postfix_patterns以不同的方式定义电子邮件模式:EMAILADDRESS %{EMAILADDRESSPART:local}@%{EMAILADDRESSPART:remote},它也可以有效。