 |
Регулярное выражение + конец строки [BOOST] |

12.06.2010, 17:14
|
|
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
С нами:
10233548
Репутация:
1118
|
|
Регулярное выражение + конец строки [BOOST]
Мужики подскажите плиз , ато что-то в тупик зашел.
Курлом получаю страницу и с нее нужно спарсить некоторые данные
Кусок страницы
Код:
<tr><td colspan="5" class="statdate">2010-06-12</td></tr>Этоесть конец строки
<tr><td> </td><td>default</td><td>0</td><td>29</td><td>2.0826 р.</td></tr>
По отдельности распарсить нет проблем но вот хочется одним запросом и что-то не догоню как поймать конец строки - точнее как в регулярке его обозначить.
Допустим есть регулярка
Код:
<tr><td colspan=\"5\" class=\"statdate\">([0-9//-])</td></tr>Что впихнуть сюда?<tr><td> </td><td>([a-z]+)</td><td>([0-9]+)</td><td>([0-9]+)</td><td>([0-9//.]+) р.</td></tr>
З.Ы. Пробывал \r , \n и их комбинации
|
|
|

12.06.2010, 17:45
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами:
10386906
Репутация:
599
|
|
(\r\n)*
нормально парсит конец строки. проверяй в hex редакторе, точно там нужные байты?
А на счет одного запроса - не обязательно. Часто писали что лучше делать целевые регулярки, чем комбайн.
|
|
|

12.06.2010, 18:34
|
|
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
С нами:
10233548
Репутация:
1118
|
|
Буст не желает парсить таким образом.
Одним запросом в моем случае удобнее, а несколькими много лишнего кода, ну буду парсить пораздельности =/
|
|
|

12.06.2010, 18:36
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами:
10386906
Репутация:
599
|
|
почему лишний. делаешь для каждого типа текста свой метод парса. в итоге в главном меотде будет типа parseTags(...); parseEndLines(...); parsData(...); return result;
|
|
|

12.06.2010, 19:00
|
|
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
С нами:
10233548
Репутация:
1118
|
|
Да и так прийдется делать отдельные парсеры для данных.
Ща сижу думаю алгоритм как это все красиво потом в табличку запихнуть =)
З.Ы. Лучше бы я все это на перле или php написал .
Брррр.. нельзя писать под градусом. Криво но зато работает =))
PHP код:
string GetClickAndSumm(string data)
{
boost::match_flag_type flags = boost::match_default;
std::string::const_iterator start, end ;
start = data.begin();
end = data.end();
char OutData[65000] , temp[1024];
ZeroMemory(OutData,65000);
ZeroMemory(temp,1024);
boost::regex expressionDate("<tr><td colspan=\'5\' class=\'statdate\'>([0-9//-]+)</td></tr>");
boost::regex expressionSumm("<tr><td> </td><td>([a-z]+)</td><td>([0-9]+)</td><td>([0-9]+)</td><td>([0-9//.]+) р.</td></tr>");
string str(data);
boost::smatch whatDate, whatSumm;
lstrcat(OutData,"========================================================================\n");
lstrcat(OutData,"| Date | Profile | PopUnder | ClickUnder | Summa \n");
lstrcat(OutData,"|--------------+-------------+-------------+--------------+------------|\n");
while((boost::regex_search(start, end, whatDate, expressionDate, flags))&&(boost::regex_search(start, end, whatSumm, expressionSumm, flags)))
{
lstrcat(OutData,"| ");
sprintf(temp,string(whatDate[1]).c_str());
lstrcat(OutData,temp);
lstrcat(OutData," ");
sprintf(temp,string(whatSumm[1]).c_str());
lstrcat(OutData,temp);
lstrcat(OutData," ");
sprintf(temp,string(whatSumm[2]).c_str());
lstrcat(OutData,temp);
lstrcat(OutData," ");
sprintf(temp,string(whatSumm[3]).c_str());
lstrcat(OutData,temp);
lstrcat(OutData," ");
sprintf(temp,string(whatSumm[4]).c_str());
lstrcat(OutData,temp);
lstrcat(OutData,"p. \n");
lstrcat(OutData,"|--------------+-------------+-------------+--------------+------------|\n");
start = whatDate[0].second;
flags |= boost::match_prev_avail;
flags |= boost::match_not_bob;
}
return string(OutData);
}
Последний раз редактировалось POS_troi; 12.06.2010 в 22:28..
|
|
|
|
 |
Предыдущая тема
Следующая тема
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Помогите составить регулярное выражение
|
speles |
С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby |
3 |
09.01.2010 23:05 |
|
Удастся ли дожить до конца света?
|
tRanz |
Болталка |
33 |
02.11.2009 23:43 |
|
C# регулярное выражение
|
kusanagi |
С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby |
1 |
17.07.2009 14:33 |
|
Помогите составить регулярное выражение
|
slesh |
PHP |
7 |
03.06.2009 09:39 |
|
Конец строки
|
nc.STRIEM |
PHP |
11 |
04.07.2006 00:44 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|