【发布时间】:2016-11-15 02:16:27
【问题描述】:
我在模式文件中定义了以下 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
我收到编译错误是因为什么原因/这甚至会与该日志行中的电子邮件匹配吗?
谢谢,
【问题讨论】:
-
我认为你可以使用
(?<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}))*)。不知道为什么会失败,但+-=绝对是错误的模式,-不应该是范围运算符(必须转义或放在 char 类的末尾)。此外,在生成的正则表达式中不需要\b,因为@是非单词字符,而[0-9A-Za-z]匹配单词字符。 -
这对我来说并没有失败,但它与字符串中的电子邮件地址不匹配,对你有用吗?
-
(?<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工作。顺便说一句,github.com/rgevaert/grok-patterns/blob/master/grok.d/… 对电子邮件模式的定义不同:EMAILADDRESS %{EMAILADDRESSPART:local}@%{EMAILADDRESSPART:remote} -
太棒了,这些都对我有用......你能把最后一条评论变成答案,因为这解决了我的问题吗?谢谢,
标签: pattern-matching logstash-grok grok