Моё сознанье несется ракетой в сторону солнца!!!
[ok]
Доброй ночи!
Мне нужна помощь с регулярными выражениями XML. Вопрос несложный, но я что-то запуталась...
Я пишу парсер для логов. В файле строки вот такого типа
И мне нужно слепить выражение, которое будет их на колонки разбивать
Вот так правильно будет???
И еще, посоветуйте, пожалуйста, инструмент или прогу, с помощью которого можно проверять такие коды - ну то есть скармливать что-нибудь ему и смотреть, что получается, а то я в блокноте пишу и методом граблей по лбу на продакшн-сервере все проверяю...
И последнее, если я хочу отфильтровать только те строки где есть ERROR, регулярное выражение для тега filterin будет .*ERROR.* ? Или нет?
Заранее извиняюсь, я не программист))) Для меня это очень сложно.
Спасибо!
Доброй ночи!
Мне нужна помощь с регулярными выражениями XML. Вопрос несложный, но я что-то запуталась...
Я пишу парсер для логов. В файле строки вот такого типа
И мне нужно слепить выражение, которое будет их на колонки разбивать
Вот так правильно будет???
И еще, посоветуйте, пожалуйста, инструмент или прогу, с помощью которого можно проверять такие коды - ну то есть скармливать что-нибудь ему и смотреть, что получается, а то я в блокноте пишу и методом граблей по лбу на продакшн-сервере все проверяю...
И последнее, если я хочу отфильтровать только те строки где есть ERROR, регулярное выражение для тега filterin будет .*ERROR.* ? Или нет?
Заранее извиняюсь, я не программист))) Для меня это очень сложно.
Спасибо!
-
-
16.11.2011 в 23:11Нет, не правильно. Квантификатор * - обычно жадный.
Если язык позволяет, можно использовать *? или искать "все, кроме разделителя".
-
-
16.11.2011 в 23:15> регулярное выражение для тега filterin будет .*ERROR.* ? Или нет?
Всё же, уточните язык. На perl это будет просто if ($m=~/ERROR/)
И да, для конкретно такой задачи намного эффективней использовать поиск подстроки, быстрее будет искать.
-
-
16.11.2011 в 23:18эээ...а как? у меня не все строки в таком формате (exception'ы пишутся в несколько строк), поэтому я хочу выбрать только те, которые начинаются с таймстемпа тупо проигнорив все остальные, а для этого таймстемп нужно как-то выцепить. наверное. А что можно вместо * использовать?
-
-
16.11.2011 в 23:21-
-
16.11.2011 в 23:25Как-то так.
-
-
16.11.2011 в 23:25Вполне может.
-
-
16.11.2011 в 23:27Точка же любой символ заматчит. Должно быть \.
-
-
16.11.2011 в 23:32Я правда еще вот такой вариант строки нашла
2011-10-25/05:34:59.230 [DefaultMessageListenerContainer-1] WARN Execution of JMS message listener failed
тогда получится вместо (\[Thread-\d+\]) надо будет (\[\s+\]) написать ?
-
-
16.11.2011 в 23:37-
-
16.11.2011 в 23:42Это всё может быть неправда и не работать. Я не проверял.
> (\[\s+\])
Нет, (\[[\s\d]+\]), там еще цифры, а цифра (d), это не буква (s).
И я не знаю, работают ли в javasсript подобные сокращения (классы символов это называется). Но всегда можно написать множество, типа [0-9].
-
-
16.11.2011 в 23:48все-таки мне кажется должен быть альтернативный вариант проверки, а то мне кажется я гвозди микроскопом забиваю))
-
-
16.11.2011 в 23:57Примеры:
.* — означает «любое количество любых символов» (обычно максимально возможное количество)
[.*] — это означает «один символ — точка или звёздочка»
\. — одна точка
\.* — любое количество точек (в том числе ни одной)
[0-9] — один любой символ в диапазоне от 0 до 9
[09-] — один символ — ноль, девятка или минус
\[0-9\] — строка «[0-9]»
-
-
16.11.2011 в 23:59Есть.
Заготовьте текстовый файл с логом, и проверяйте его какой-нибудь небольшой самописной программулиной.
Сложно сказать, что будет удобно именно для вас. Существует множество способов.Есть даже плагин для Firefox )))
-
-
17.11.2011 в 00:11www.pagecolumn.com/tool/regtest.htm
regexpal.com/
для остального:
www.google.ru/search?q=regexp+online
-
-
17.11.2011 в 00:11а то я на RSDN пыталась читать и ничего не поняла там
Trotil, и вам спасибо)
-
-
17.11.2011 в 00:21там похоже свой язык на основе javasсript'а, но regexp для них совпадают
-
-
18.11.2011 в 11:01-
-
18.11.2011 в 16:44вот такое я в итоге соорудила
-
-
18.11.2011 в 16:45