У меня есть код в grok, который захватывает сообщения, и если они соответствуют заданным критериям, они получают тег.Regexp in Grok иногда иногда получает значение
Моя проблема в том, что иногда этот фильтр работает во время тестирования, а иногда нет. Регулярное выражение в вопросе заключается в следующем:
^(?!(?:\d\d\d\d-\d\d-\d\d.\d\d:\d\d:\d\d)).*$
Эта строка проверяет, является ли данное сообщение не начинается с заданного формата метки времени. Другими словами: если данное сообщение не начинается с этого штампа времени, тогда он получает тег.
Вы можете проверить это самостоятельно с этим интерактивным приложением: http://grokconstructor.appspot.com/do/match#result
Для этих значений испытаний, regepx фиксирует все сообщения, которые соответствуют критериям, таким образом, две строки с «тестом», выделены зеленым цветом:
test
2016-09-23 18:26:49,714
2016-09-23 18:26:40,244
test
Однако он захватывает первую дату, когда вход что-то вроде этого:
2016-09-23 18:26:49,714
2016-09-23 18:26:40,244
test
Я хотел бы понять WHA t является причиной этого поведения и как я могу его предотвратить?
'.' похоже, что это единственное пространство @ WiktorStribiżew – revo
[Это не воспроизводится] (http://i.stack.imgur.com/lpVlJ.png) – revo
@revo OP говорит, что это работает иногда. Для второго набора данных я получаю: http://i.stack.imgur.com/AphzA.png – Laurel