匹配电子邮件地址的 Grok 模式

Grok pattern to match email address

我在模式文件中定义了以下 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/ 使用以下输入时,这不会编译,它只是 returns "Compile error"

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

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

谢谢,

您可以使用

(?<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},它也可能有效。