2013-03-18 2 views
0

Я пытаюсь совместить строки исключений, которые я вижу в файле журнала. Файл журнала имеет формат «[временная метка] ThreadId (8 буквенно-цифровых знаков) ApplicationName (любая длина буквенно-цифровых символов) E (для обозначения сообщения исключений)»php регулярное выражение соответствие файла журнала

Так журнал сообщение исключения образец будет:

"[11/27/12 22: 33: 02: 635 EST] 0000009a MyApplication E" Все, что может прийти после того, как Е.

У меня возникают проблемы с поиском регулярное выражение, чтобы соответствовать этому использование PHP preg_match

Любая помощь будет оценена по достоинству.

Приветствия

ответ

0

попробуйте следующее:

'/^\[[^\]]+\]\s\w{8}\s[^\s]+\sE.*/m' 

Замыкающий «м» гарантирует, что клин в начале совпадает с началом строки в журнале.

Это решение, конечно, будет работать только в том случае, если все записи журнала выглядят довольно похожими, за исключением «E». Если есть записи журнала, например. без временных меток, это может потерпеть неудачу, и вам нужно искать более подробные выражения, такие как sputnick's.

+0

спасибо за вашу помощь :) – froncthetonc

+0

Это работает очень хорошо, кроме него, не соответствует строки с более чем 1 места до и после например, «E»: «[3/21/13 13: 43: 59: 396 CDT] 00000075 myApplication E» Может ли кто-нибудь помочь в этом? Я пытаюсь изменить '/^\ [[^ \]] + \] \ w {8} [^] + E. */M', чтобы работать с ним, но я не могу – froncthetonc

+0

Попробуйте следующее: '/^\ [[^ \]] + \] \ с \ ш {8} \ s [^ \ s] + \ s + E \ s +. */м» – thomas

0

Попробуйте это регулярное выражение (с захвата группы):

/^\[\d+/\d+/\d+\s+\d+:\d+:\d+:\d+\s+\w+\]\s+\w{8}\s+\w+\s+E(.*)/ 
Смежные вопросы