Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 02.03.2015
Сообщений: 37

Найти ближайший текст

31.03.2015, 12:10. Показов 1228. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Никак не получается пройти текст назад до ближайшей фразы.
Знаю, что по символу можно найти с помощью функции strrchr. Какая функция позволит определить фразу?
Спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.03.2015, 12:10
Ответы с готовыми решениями:

Найти ближайший элемент.
Написать функцию нахождения в массиве целых чисел элемента, ближайшего к значению второго фргумента типа int.. заранее благодарю

Найти элемент последовательности ближайший к заданному числу
Есть задача, не понимаю что как делать Дана последовательность вещественных чисел a1,a2, ... , a15 упорядоченная по возрастанию, и...

Найти узел, имеющий ближайший к значению ключ
Всем привет. Есть условие. первая часть уже решена. помогите пожалуйста найти узел, имеющий ближайший к этому значению ключ. ...

2
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
31.03.2015, 12:37
ДмитрийЛАСТ, а немного по подробней можно?
0
0 / 0 / 1
Регистрация: 02.03.2015
Сообщений: 37
01.04.2015, 04:44  [ТС]
Лучший ответ Сообщение было отмечено ДмитрийЛАСТ как решение

Решение

Задача следующая: Проверке подвергается масса сайтов учреждений. На каждом должны быть определенные разделы.
Этим кодом я нахожу нужный раздел, например Основные сведения
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
long int __fastcall TGlav_Form::FindHttpText(String httpmemo, int numberUrl, int numberText)
{
    /*std::wstring wstdLine(HtmlMemoText.t_str());
    std::string stdLine(wstdLine.begin(), wstdLine.end());*/
    Application->ProcessMessages();
    String HtmlMemoText = httpmemo;
    std::string stdLine(AnsiString(HtmlMemoText).c_str());
    std::string ExpressionText(AnsiString(ListBox2->Items->Strings[numberText]).c_str());
    boost::regex xRegEx (ExpressionText);
    boost::smatch xResults;
    std::string::const_iterator xItStart = stdLine.begin();
    std::string::const_iterator xItEnd = stdLine.end();
    if ((boost::regex_search(xItStart, xItEnd, xResults, xRegEx)) && (sizeof(xResults) > 1)) {
        return xResults.position();
    } else return -1;
}
Но никак ни могу понять, как теперь соответствующую href взять.
Пробую так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
        //Третий вариант
 
        String HtmlMemoText = httpmemo.SubString(0, positionText);
        std::string stdLine(AnsiString(HtmlMemoText).c_str());
        //std::string ExpressionText("(?-i)href\\=");
        std::string ExpressionText("href");
        boost::regex xRegEx (ExpressionText);
        boost::smatch xResults;
        std::string::const_iterator xItStart = stdLine.begin();
        std::string::const_iterator xItEnd = stdLine.end();
        int pos = 0;
        int max_pos = 0;
        std::string found;
        while (((boost::regex_search(xItStart, xItEnd, xResults, xRegEx))) && (pos != HtmlMemoText.Length())){
            found.assign(xResults[0]);
            pos += xResults.position(0);
            if (pos > max_pos) max_pos = pos;
            xItStart = xResults[1].second;
        }
        String HtmlMemoText_T = HtmlMemoText.SubString(max_pos, HtmlMemoText.Length());
        max_pos = HtmlMemoText_T.Pos("href");
        AnsiString itogova = "";
        AnsiString HtmlMemoText_ = HtmlMemoText_T;
        char *lastsymbol = HtmlMemoText_.c_str();
        char *skobka = "\"";
        int nn = strlen(lastsymbol);
        for (int i = max_pos + 5; i < nn; i++) {
            if (lastsymbol[i] != *skobka) {
                itogova = itogova + lastsymbol[i];
            }
            else break;
        }
Но, мне почему то за две ссылки выше считывается href.
То ли boost::regex_search max_pos не определяет. Вообщем мне надо ближайший к найденному тексту тег href.
Спасибо.

Добавлено через 5 часов 9 минут
Я пробовал и так, понятно, что функция char. Поэтому тоже не идет. Неужели никто не парсил текст?
C++
1
2
3
4
5
6
7
8
9
10
        AnsiString findhref = httpmemo.SubString(0, positionText);
        char *stroka = findhref.c_str();
        char *lastsymbol;
        lastsymbol = strrchr(stroka, 'href');
        long int n = lastsymbol - stroka + 4;
        char *lastsymbol_;
        lastsymbol_ = strchr(lastsymbol, '>');
        long int nn = lastsymbol_ - lastsymbol + 1;
        AnsiString lastsymbol__ = lastsymbol;
        AnsiString findhref_ = lastsymbol__.SubString(4, nn-5);
Добавлено через 10 часов 31 минуту
Путем экспериментов обнаружил, что есть ошибка в регулярке:
C++
1
2
3
std::string ExpressionText("(?-i)href\\=");
ЗАМЕНИЛ НА
std::string ExpressionText("<a +href=\"");
Но, например для:
PHP/HTML
1
2
3
4
<a class="item" href="/articles/146-struktura-i-organy-upravlenija.html"  target="_self">
<span class="wrap">
Структура и органы управления</span>
</a>
не работает.
Так же не пойму, почему мне приходится использовать:
C++
1
2
        String HtmlMemoText_T = HtmlMemoText.SubString(max_pos, HtmlMemoText.Length());
        max_pos = HtmlMemoText_T.Pos("href");
Полагал, что регулярка должна найти.
Может подскажете универсальную регулярку для этих целей?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.04.2015, 04:44
Помогаю со студенческими работами здесь

Найти элемент двухмерного массива, ближайший к числу
Помогите подправить программу: Найти элемент двухмерного массива, ближайший к числу -2, и его индексы. двухмерный массив целых чисел...

В бинарном дереве найти ближайший путь к заданному узлу
В заданном непустом бинарном дереве найти длину (число ветвей) пути от корня до ближайшей вершины со значением, равным заданному....

Найти элемент последовательности (его порядковый номер и значение), ближайший к n
я не прошу код(но не откажусь). Хотя бы с чего мне начать подскажите задача: Дана последовательность вещественных чисел а1,а2, ..а15,...

Найти в массиве ближайший по значению элемент меньший заданного числа
Добрый день, господа. Помогите пожалуйста с решением задачи. Дано некоторое число А. Найти в целочисленном массиве В из N элементов...

Найти ближайший факториал (С паскаля на C)
Здравствуйте! Нужно написать программу в C На паскале она уже написана. Пожалуйста помогите. Вот код Program new; uses crt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru