Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2023, 16:34   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье Как извлечь веб-ссылку из строки?

Здравствуйте!
Подскажите, пожалуйста, как извлечь веб-ссылку из строки? Например из такой строки: catchup="default" catchup-source="http://messi.tvfor.pro/TV6LTHD/zgb3ski8ly5vt3e15188a161?utc=${star t}" catchup-days="5" timeshift="5". Мне нужен участок строки от http до знака Вопрос: http://messi.tvfor.pro/TV6LTHD/zgb3ski8ly5vt3e15188a161.
Женя32 вне форума Ответить с цитированием
Старый 08.07.2023, 18:06   #2
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Может быть с помощью регулярного выражения как-то можно сделать?
Женя32 вне форума Ответить с цитированием
Старый 10.07.2023, 14:43   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Вообще HTML не регулярный язык, но можно извлечь так:
Код:
#include <iostream>
#include <regex>

int main()
{
    std::string s = "catchup=\"default\" catchup-source=\"http://messi.tvfor.pro/TV6LTHD/zgb3ski8ly5vt3e15188a161?utc=${star t}\" catchup-days=\"5\" timeshift=\"5\"";
    std::regex http_regex("\"(http.+?)(\\?|\")");
    std::smatch match;
    if (std::regex_search(s, match, http_regex))
    {
        std::cout << match[1].str() << std::endl;
    }
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 10.07.2023, 17:20   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
но можно извлечь так
Лучше извлекать содержимое тэга, чем искать http по всему документу...
А еще лучше, распарсить сам HTML ближайшей библиотекой для парсинга HTML и просто получить значение нужного поля.
waleri вне форума Ответить с цитированием
Старый 10.07.2023, 22:12   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
распарсить сам HTML ближайшей библиотекой для парсинга HTML и просто получить значение нужного поля.
Согласен, что так лучше в общем случае, но если уже есть такая мелкая строка, а не полный документ, то вообще-бы обошелся find и find_first_of:
Код:
#include <iostream>

int main()
{
    std::string s = "catchup=\"default\" catchup-source=\"http://messi.tvfor.pro/TV6LTHD/zgb3ski8ly5vt3e15188a161?utc=${star t}\" catchup-days=\"5\" timeshift=\"5\"";
    std::size_t start_url = s.find("http");
    if (start_url != std::string::npos)
    {
        std::size_t end_url = s.find_first_of("\"?", start_url);
        if (end_url != std::string::npos)
        {
            std::cout << s.substr(start_url, end_url - start_url) << std::endl;
        }
    }
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Извлечь из строки все числа JAVASCRIPT Мария19043 Помощь студентам 3 11.04.2020 13:58
Как преобразовать ссылку VK чтобы извлечь type, owner_id, item_id? PaHaNjkee Работа с сетью в Delphi 0 16.12.2015 21:17
как извлечь нужный текст из строки mariyavaryanitsa Microsoft Office Excel 16 01.11.2012 00:04
Извлечь ссылку из html-кода Aleksandr_59 Работа с сетью в Delphi 3 14.04.2012 14:43