![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Как быстрее распарсить хидер почтового письма? Подскажите алгоритм или может у кого-есть готовый парсер.
Это сообщение отредактировал(а) Alca - 12.6.2009, 10:35 |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
имхо, регулярные выражения нужно использовать. |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Не силен я в регулах... Добавлено @ 10:43 PCRE? zim22, что можешь посоветовать под VC++ 2008? Добавлено через 8 минут и 31 секунду boost_regex? Это сообщение отредактировал(а) Alca - 12.6.2009, 10:45 |
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
что-то типа
Это сообщение отредактировал(а) triclosan - 12.6.2009, 11:10 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| Alca |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Получить список (std::multimap) такого плана:
Добавлено @ 11:20
Не катит, т.к. поля могут быть многострочными. Это сообщение отредактировал(а) Alca - 12.6.2009, 11:21 |
||||||||
|
|||||||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
azesmcar, я думаю Alca имел ввиду быстроту написания, а не быстроту выполнения кода я тоже не силён. запостите вопрос в подфорум по Perl или PHP. в этих языках регулярки часто применяют. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Alca http://www.scalingweb.com/mime_parser.php вот готовый парсер, довольно неплохо написан. Правда на QT, но можно частично использовать. |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Я имел ввиду быстроту выполнения кода Добавлено через 4 минуты и 32 секунды Эт я видал. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Писал когда-то для HTTP-header'ов, немного доработаешь, получишь то, что надо:
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 3 Всего: 32 |
Насчёт boost.regex, везде в примерах использования этого чуда как-раз парсинг строки с мэйлом.
пример -------------------- ![]() |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
W4FhLF, Спасибо. Но поля могут быть многострочными.
|
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Alca, ну несложно и это проверять, просто ввести другой признак конца поля.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Что-то никак не могу придумать |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Берешь обычный однострочный парсер, добавляешь к нему переменную (назовем ее last), которая будет хранить последний отпрасенный элемент заголовка (в виде его ID или сразу итератора в multimap). Если на входе появляется продолжение строки заголовка (оно начинается с пробельного символа), от него отрезаются лишние пробелы в начале, после чего он приклеивается к последнему отпарсенному хидеру (по переменной last) Это сообщение отредактировал(а) xvr - 15.6.2009, 18:33 |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |