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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбор URL через Boost 
:(
    Опции темы
featZima
Дата 24.5.2010, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 31.8.2008
Где: Украина, Харьков

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



Есть рабочая функция, которая разбирает url на части

Код

void Url::assign(const std::string& url) 
{
    m_rawurl = url;
    std::vector<std::string> values;
    boost::regex expression(
        //       proto                 host               port
        "^(\?:([^:/?#]+)://)\?(\\w+[^/?#:]*)(\?::(\\d+))\?"
        //       path                  file       parameters
        "(/\?(\?:[^?#/]*/)*)\?([^?#]*)\?(\\\?(.*))\?"
    );
    std::string src(url);
    if (boost::regex_split(std::back_inserter(values), src, expression))
    {
        // parsing result
        m_protocol = values[0];
        m_host = values[1];
        m_port = values[2];
        m_path = values[3];
        m_file = values[4];
        m_parameters = values[5];
    }
}


пытался разобраться в регулярном выражении, но никак не могу понять что такое \?
Подскажите кто знает...
PM MAIL WWW ICQ GTalk Jabber   Вверх
Peter
Дата 28.5.2010, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
jonie
Дата 28.5.2010, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Peter, а еще надо учитывать что это C++ и в нём \? считается управляющей конструкцией при разборе строки....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Peter
Дата 29.5.2010, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



И то правда... Но я что-то раньше не встречал в Си++ конструкцию '\?'. Смотрим MSDN:
Цитата
Note that the question mark preceded by a backslash (\?) specifies a literal question mark in cases where the character sequence would be misinterpreted as a trigraph.
Значит, имеется в виду просто знак вопроса.


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.5935 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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