Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: а вот про регулярные выражения или нечто подобное…  (Прочитано 4779 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Chuda
Гость
« : 25-03-2009 14:58 » 

Просьба ногами не бить, если вопрос совсем дурацкий. С билдером встречаюсь крайне редко, больше под веб программлю, а тут задача встала:
Получить с сервера страницу и распарсить её. Даже проще: вытащить с этой страницы определённую строку, которую легко можно описать регулярным выражением.
Собственно вопрос: как это сделать? Где можно вообще узнать о работе с регулярными выражениями в билдере? Или есть для подобных задач какие-либо свои более иные инструменты?
Записан
RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 25-03-2009 15:34 » 

Шильгия, вот компонента для билдера TRegExpr, думаю можно с её помощью попробовать Улыбаюсь Сам её не использовал, по этому больше сказать не могу:
http://ourworld.compuserve.com/homepages/John_Maddock/regexpp.htm
Записан

Любимая игрушка - debugger ...
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 25-03-2009 16:17 » 

В BCB есть нормальные регулярные выражения - и POSIX, и PCRE. Заголовок - pcreposix.h.

Код: (C++)
#define RE_MATCHES_MAX

regex_t re;
regmatch_t re_matches[RE_MATCHES_MAX];
char *re_str = "^([-_.a-z0-9]+)@([-a-z0-9]+.)*([a-z0-9]+)$";
char *test_str = "test@shelek.ru";

if (regcomp(&re, re_str, 0))
{
    // error
}

if (regexec(&re, test_str, RE_MATCHES_MAX, re_matches, 0))
{
    // ...
}
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Chuda
Гость
« Ответ #3 : 25-03-2009 16:24 » 

Про TRegExpr мне уже нагуглилось, и на том форуме люди отзывались в том смысле, что их синтаксис отличается от традиционного.
Поэтому стандартные PCRE гораздо лучше. Особенно, если они уже есть. Устанавливать сторонние компоненты в BCB мне не под силу.

RXL, а где можно об этом почитать (учитывая, что совсем-совсем не знаю ни BCB, ни С++ вообще, ни windows, ни прочей специфики данного проекта)? Ну просто чтобы не задавать совсем уж глупых вопросов.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 25-03-2009 16:53 » 

Завется "POSIX API for Perl-compatible regular expressions".

С BCB идут доки (hlp) - там описано.
http://files.shelek.su/limited/private-files/rxl/bcb6rtl.hlp (~1 МБ)
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
zubr
Команда клуба

by
Offline Offline
Пол: Мужской

« Ответ #5 : 25-03-2009 18:23 » 

Имхо, html-страницы удобнее всего парсить, используя интерфейсы IE - IWebBrowser, IHTMLDocument2. Благодаря им получаешь иерархическую структуру документа с возможностью пречисления по тегам.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 25-03-2009 18:41 » 

zubr, это смотря что надо: ползать по дереву и делать кучу проверок - тоже не великое удовольствие, а если надо найти просто строку определенного формата, то рег.выражение будет быстрее и легче.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Chuda
Гость
« Ответ #7 : 25-03-2009 19:11 » 

кстати, получить страничку в виде DOM интересно (хотя и не в этом случае), но тут вопрос: а если страничка написана криворучкой и структура её нарушена?
Ну вот например такой случай:
Код:
<body>
<html>
<p>это <b>страница</p></b>
</head>
</body>
</html>
как ни прискорбно, акое встречается часто.
Записан
zubr
Команда клуба

by
Offline Offline
Пол: Мужской

« Ответ #8 : 25-03-2009 19:26 » 

С XML такой фокус не прошел бы, а DOM выдаст текст для <P> "это страница", а для <B> "страница"
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines