Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Регулярные выражения в си++.

10K
06 мая 2006 года
SN_ok
17 / / 30.11.2005
Здравствуйте. Помогите решить проблему.

Дана строка, в которой содержится http заголовок (типа GET /HTTP/1.0 и т.д.).
Надо выделить из строки адрес запрашиваемого ресурса.

Знаю, как это сделать в perle с помощью regex, но надо написать на си++.
Я плохо ориентируюсь в си++, как это сделать?
Если можно покажите пример какой-нибудь.
2
06 мая 2006 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by SN_ok
Здравствуйте. Помогите решить проблему.

Дана строка, в которой содержится http заголовок (типа GET /HTTP/1.0 и т.д.).
Надо выделить из строки адрес запрашиваемого ресурса.

Знаю, как это сделать в perle с помощью regex, но надо написать на си++.
Я плохо ориентируюсь в си++, как это сделать?
Если можно покажите пример какой-нибудь.


есть набор POSIX функций для обработки регекспов:

 
Код:
int regcomp(regex_t *preg, const char *regex, int cflags);
int regexec(const  regex_t  *preg,  const  char *string, size_t nmatch, regmatch_t pmatch[], int eflags);
size_t regerror(int errcode, const regex_t *preg, char *errbuf,  size_t errbuf_size);
void regfree(regex_t *preg);


для С++ вроде в BOOST есть спец. классы.
10K
09 мая 2006 года
SN_ok
17 / / 30.11.2005
Цитата:
для С++ вроде в BOOST есть спец. классы.



Спасибо за указания вектора поиска.

1. Я использовал BOOST http://www.boost.org/.

Здесь - BOOST RUS - дано частичное описание этой библиотеки на русском языке.
Вот прямая ссылка на документацию BOOST::REGEX.

2. Здесь - "C++ Boost настройка, установка, использование - просто" - дано (неполное) описание "Установка на примере windows".

Я установил библиотеку для c++ builder 6 так.
Cкачал исходники библиотеки (около 13Mb),
и инструмент установки, компиляции бибилиотеки BOOST Jam (100Kb).

Прямые ссылки на скачивание:
boost_1_33_1.tar.gz
boost-jam-3.1.12-1-ntx86.zip

Разархивировал оба файла, скопировал bjam.exe (из архива boost-jam-3.1.12-1-ntx86.zip) в папку с исходниками (из архива boost_1_33_1.tar.gz).

Теперь из папки с исходниками открываем консоль cmd и пишем команду: bjam "-sTOOLS=borland" install
Ждем завершения компиляции (около 2 мин). В папке C:\Boost\ увидим результаты компиляции.

Переносим все содержимое папки C:\Boost\lib\
С:\Program Files\Borland\CBuilder6\Lib\

Копируем папку boost из из исходников в
E:\Program Files\Borland\CBuilder6\Include\

Готово.

Пример использования:

Код:
#include <stdlib.h>
#include <boost/regex.hpp>
#include <string>
#include <iostream>
         
int main (void){
   using namespace std;
   using namespace boost;

   regex expression("([_a-zA-Z\\d\\-\\.]+)@([_a-zA-Z\\d\\-]+(\\.[_a-zA-Z\\d\\-]+)+)");
   string str("Мой E-mail: [email]sem@ciam.ru[/email]. Задавайте любые вопросы.");
   cmatch what;

   if(regex_search(str, what, expression)){
        string name, domain;
        name.assign(what[1].first, what[1].second);
        domain.assign(what[2].first, what[2].second);
        cout << "Имя: " << name;
        cout << ", домен: " << domain << endl;
   } else
        cout << "E-Mail в строке не найден" << endl;

};



Есть еще библиотека Perl PCRE - Perl Compatible Regular Expressions/
Здесь - http://www.linuxrsp.ru/artic/pcre5.html
описаны функции библиотеки PCRE.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог