HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Регулярное выражение + конец строки [BOOST]
  #1  
Старый 12.06.2010, 17:14
POS_troi
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
С нами: 10233548

Репутация: 1118


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

Мужики подскажите плиз , ато что-то в тупик зашел.

Курлом получаю страницу и с нее нужно спарсить некоторые данные

Кусок страницы
Код:
<tr><td colspan="5" class="statdate">2010-06-12</td></tr>Этоесть конец строки
<tr><td>&nbsp;</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>&nbsp;</td><td>([a-z]+)</td><td>([0-9]+)</td><td>([0-9]+)</td><td>([0-9//.]+) р.</td></tr>
З.Ы. Пробывал \r , \n и их комбинации
 
Ответить с цитированием

  #2  
Старый 12.06.2010, 17:45
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами: 10386906

Репутация: 599


По умолчанию

(\r\n)*

нормально парсит конец строки. проверяй в hex редакторе, точно там нужные байты?

А на счет одного запроса - не обязательно. Часто писали что лучше делать целевые регулярки, чем комбайн.
 
Ответить с цитированием

  #3  
Старый 12.06.2010, 18:34
POS_troi
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
С нами: 10233548

Репутация: 1118


По умолчанию

Буст не желает парсить таким образом.

Одним запросом в моем случае удобнее, а несколькими много лишнего кода, ну буду парсить пораздельности =/
 
Ответить с цитированием

  #4  
Старый 12.06.2010, 18:36
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами: 10386906

Репутация: 599


По умолчанию

почему лишний. делаешь для каждого типа текста свой метод парса. в итоге в главном меотде будет типа parseTags(...); parseEndLines(...); parsData(...); return result;
 
Ответить с цитированием

  #5  
Старый 12.06.2010, 19:00
POS_troi
Познавший АНТИЧАТ
Регистрация: 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 startend ;
    
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>&nbsp;</td><td>([a-z]+)</td><td>([0-9]+)</td><td>([0-9]+)</td><td>([0-9//.]+) р.</td></tr>");
    
string str(data);
    
boost::smatch whatDatewhatSumm;

    
lstrcat(OutData,"========================================================================\n");
    
lstrcat(OutData,"|    Date      |   Profile   |   PopUnder  |  ClickUnder  |    Summa    \n");
    
lstrcat(OutData,"|--------------+-------------+-------------+--------------+------------|\n");

    while((
boost::regex_search(startendwhatDateexpressionDateflags))&&(boost::regex_search(startendwhatSummexpressionSummflags)))
    {
   

  
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)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.