У меня есть следующие шаблоны 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 [email protected] > 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]
соответствует слову char. - person Wiktor Stribiżew   schedule 12.07.2016(?<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}
- person Wiktor Stribiżew   schedule 12.07.2016