Я пытаюсь использовать довольно сложное выражение REGEX (см. Демонстрацию REGEX101 ниже), которое я немного изменил по сравнению с тем, которое было создано экспертом на этом сайте. Он анализирует конкретные шаблоны событий журнала:
- 1 EXE_IN 1 EXE_CO 2 1010 * CONTENT_ACCESS * 3 1012 * CONTENT_ACCESS *
Эти лог-последовательности всегда начинаются со случайного выбора событий EXE_IN
или EXE_CO
с предшествующими порядковыми номерами. Эти выборы могут быть любым числом, в любом порядке. В этом случае у нас просто есть два события EXE
, но это может быть 200. Или 1. Обратите внимание, что есть порядковый номер, и нам нужно его захватить.
Вторая часть последовательности всегда будет серией CONTENT.ACCESS
событий с предисловием. Снова от 1 до бесконечности в длину.
Следующая демонстрация демонстрирует рабочий пример и, вероятно, передает концепцию лучше, чем я: Демо 1
Он прекрасно фиксирует полное совпадение, порядковый номер и событие в отдельных группах.
Мне нужно добавить временную метку к шаблону (после порядкового номера, с предшествующим подчеркиванием), а затем проанализировать этот журнал событий, например,
- 1_11 / 08/2014 23: 03EXE_IN1_11 / 08/2014 23: 03EXE_CO2_12 / 08/2014 09: 17CONTENT_ACCESS3_13 / 08/2014 09: 17CONTENT_ACCESS
Мне нужно также захватить метки времени.
Я попытался скорректировать выражение регулярного выражения со смешанными результатами. Пожалуйста, посмотрите это демо: demo2
В идеале я бы хотел видеть что-то подобное для каждого события:
Match n
Full match 266-308 `2_12/08/2014 09:17CONTENT_ACCESS`
Group 1. 266-267 `2`
Group 2. 268-284 `12/08/2014 09:17`
Group 3. 284-308 `CONTENT_ACCESS`
Надеюсь, вы мне поможете. Тестирования REGEX101 pcre достаточно (для записи я использую Perl-совместимую функцию str_match_all_perl в R) .
Большое спасибо заранее.