2015-03-16 5 views
0

первый вопрос, поэтому будьте нежны.Log Parser Lizard (MS Log Parser) Игнорировать регулярное выражение

Я являюсь регулярным языком падаван. Я только слегка болтала. Я экспериментирую с Log Parser Lizard от LizardLabs. Я пишу XML, который приложение использует MS Log Parser для применения regex к файлу журнала, чтобы вернуть результаты в довольно графическом интерфейсе. XML содержит теги, которые вы определяете как поля, так прощении грязный код, но это, как он хочет ...

<regex>\s{1,}(?&lt;PID&gt;(.*))\((?&lt;TID&gt;(.*))\)\s{1,}(?&lt;DATE&gt;(\d{2}\/\d{2}\/\d{4}))\s{1,}(?&lt;TIME&gt;(\d{2}:\d{2}:\d{2}))\s{1,}(?&lt;CLASS&gt;([A-Z][^\s]{1,}))\s{1,}(?&lt;TYPE&gt;(.{1}))\s{1,}(?&lt;MESSAGE&gt;(.{1,})).*</regex> 
    <fields> 
    <field name="PID" type="String" /> 
    <field name="TID" type="String" /> 
    <field name="DATE" type="String" /> 
    <field name="TIME" type="String" /> 
    <field name="CLASS" type="String" /> 
    <field name="TYPE" type="String" /> 
    <field name="MESSAGE" type="String" /> 
</fields> 

Примеры линий:

3840 (5516) 03/15/2015 00:10:04 JS I Запуск инцидента DeadLine Расписание обновления

3840 (5516) 03/15/2015 00:10:04 JS I нет записей для обновления

3648 (5444) 03/15/2015 01:00:07 Версия JGroups: 2.6.15.GA

Регулярно правильно захватывает первые две строки и хорошо разбирается в ней, но третья строка не работает (очевидно, потому что это не тот же формат).

Вопрос: Как использовать (?! JGroups) или [^ JGroups], чтобы регулярное выражение правильно игнорировало строку JGroups?

Я пробовал следующее:

(?&lt;CLASS&gt;([^JGroups][A-Z][^\s]{1,})) 
(?&lt;CLASS&gt;((?!JGroups([A-Z][^\s]{1,}))) 

Ничего похожего не следует игнорировать эту строку (и продолжить сопоставление).

Что я делаю неправильно? Чтобы усложнить его, использование обычного регулярного выражения (без его запуска через это приложение), похоже, работает правильно с моим вторым примером. Это ошибка приложения, не зная, как делать эти «игнорируемые» матчи?

ответ

0

В вашем регулярном выражении есть несколько странных вещей.

\s{1,} Кажется, что вы хотите использовать пространство в качестве разделителя, но вы на самом деле говорят 1 или 0 пространства

(?<CLASS>([A-Z][^\s]{1,})) Класс является одной буквой (например, «J»), а затем 1 или 0 некосмическими персонажи?

Я не могу помочь вам гораздо больше, не формат самого журнала, но, похоже, это должно быть должно нравится: \s*(?<PID>([^\s]*))\((?<TID>([^\s]*))\)\s(?<DATE>(\d{2}\/\d{2}\/\d{4}))\s(?<TIME>(\d{2}:\d{2}:\d{2}))\s(?<CLASS>([^\s]*))\s(?<TYPE>([^\s]*))\s(?<MESSAGE>(.*))

Смежные вопросы