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

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

31.03.2015, 12:10. Показов 1220. Ответов 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru