Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отпарсить? 
V
    Опции темы
Master_
Дата 16.1.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

Репутация: нет
Всего: нет



Код

<font color=red size=+1><b>1111</b></font><font color=red size=+1><b>2222</b></font><font color=red size=+1><b>3333</b></font>

Например в переменной html хранится этот текст.
Как мне сделать так, чтобы все данные, находящиеся между <font color=red size=+1><b>ТЕКСТ</font> попадали в массив по очереди? html[0] - одно совпадение, html[1] - второе и так далее?

Это сообщение отредактировал(а) Master_ - 16.1.2008, 19:46
PM   Вверх
JackYF
Дата 16.1.2008, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Master_ @  16.1.2008,  18:46 Найти цитируемый пост)
Например в переменной html хранится этот текст.

всегда ли соблюдается эта структура, все ли поля присутствуют?
Если да, то могут помочь регулярные выражения, посмотри в сторону boost::regex и общей теории по регуляркам.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Master_
Дата 16.1.2008, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

Репутация: нет
Всего: нет



Структура всегда одна и таже только контент в <font> </font> меняется.

И все же профи не составит и минуты написать мне текс... Я в си не силен, может кто-нибудь напишет пример? Читать все доки ради одной регулярки не очень...

Добавлено через 11 минут и 39 секунд
Нашел это:
Код

 Effects: Returns the result of regex_match(s.begin(), s.end(), m, e, flags).

template <class charT, class traits>
bool regex_match(const charT* str,
                 const basic_regex <charT, traits>& e,
                 match_flag_type flags = match_default);
Похоже на то что нужно по описанию.. Но юзать пока незнаю как.
PM   Вверх
Fazil6
Дата 16.1.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



вобщем можно как-то так без XML парсера
Код


#include <boost/tokenizer.hpp>
#include <iostream>
#include <vector>

const std::string sorce("<font color=red size=+1><b>1111</b></font><font color=red size=+1><b>2222</b></font><font color=red size=+1><b>3333</b></font>");
const std::string back_tag("font");

typedef boost::tokenizer<boost::char_separator<char> >  tokenizer;
typedef std::vector< std::string > HTMLVector;

int main()
{
    boost::char_separator<char> sep("</b>");
    tokenizer tokens(sorce, sep);

    HTMLVector html;
    
    std::string s;
    for (tokenizer::iterator tok_iter = tokens.begin();
        tok_iter != tokens.end(); ++tok_iter)
    {
        if( *tok_iter == back_tag)
            html.push_back(s);

        s = *tok_iter;
    }

    for( unsigned i = 0; i < html.size(); ++i)
    {
        std::cout << html[i] << "\n";
    }
    return 0;
}

PM MAIL   Вверх
JackYF
Дата 16.1.2008, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Master_ @  16.1.2008,  19:08 Найти цитируемый пост)
Но юзать пока незнаю как. 

читай руководство по регуляркам, тебе нужно составить регулярное выражение, описывающее положение текста в этом хтмл-коде.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Master_
Дата 16.1.2008, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

Репутация: нет
Всего: нет



Спасибо работает  smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.