Просмотр полной версии : C++ Builder и регулярные выражения
Не знал куда запостить вроде тема и к С++ относиться и к Delphi так что создал тему.
Вообщем проблема такого характера подключил к своему проекту curl получаю страничку её нужно распарсить, ну думаю регулярки же должны быть, нахожу компонент TRegExpr он соответсвенно под Delphi подключаю к проекту запускаю компиляцию, компилятор создает заголовочный файл, подключаю его, вроде все окей работает, но ввожу регулярные выражения ничего не находит.
Кто сталкивался с проблемой может есть либо более лучшие решения чем TRegExpr или если несложно выложить свой рабочий простой пример.
GhostOnline
16.04.2010, 16:16
Код в студию. Этот класс замечательно работает
HINSTANCE cl = NULL;
if( ( cl = LoadLibrary( "libcurl.dll" ) ) == NULL )
MessageBox(NULL, "I can't load libcurl","ERROR", 0);
TRegExpr *RegExpr = new TRegExpr;
String cookiefile;
CURL *curl;
String table;
String url;
curl = curl_easy_init();
url=Edit1->Text;
if(url=="")
url="mail.yahoo.com";
if(curl) {
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,Writer);
curl_easy_setopt(curl, CURLOPT_WRITEDATA,&table);
curl_easy_setopt(curl, CURLOPT_URL,url);
curl_easy_setopt(curl, CURLOPT_HEADER , 1 );
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, cookiefile);
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, cookiefile);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
RegExpr->Expression="#\<meta(.*?)\>#";
if(RegExpr->Exec(table))
Label1->Caption =RegExpr->ErrorMsg(RegExpr->LastError());
Label1->Caption =RegExpr->Match[0];
}
FreeLibrary(cl);
}
Может дело в регулярках т.к. писал регулярки как в php могу предположить что синтаксис здесь другой используеться.
GhostOnline
16.04.2010, 16:35
С++ не знаю. Но вот вроде Exec возвращает тру если выражение найдено,
у тебя получается если найдено то
Label1->Caption =RegExpr->ErrorMsg(RegExpr->LastError()) ?
Дай мне пример того что находится в table я составлю рабочую регулярку и проверим
mailbrush
16.04.2010, 16:36
Решетки убери.
Как всегда дъявол кроеться в мелочах =)
Спасиб mailbrush, спасиб GhostOnline.
Не могли бы скинуть полезные статьи по теме (может заволялись где нить в закромах), что в случае чего не плодить топиков.
GhostOnline
16.04.2010, 16:45
Документация на русском http://www.autocombats.info/files/regexp/index.html
M_script_
16.04.2010, 17:57
Зачем регулярки? Методов Delete и SetLength класса AnsiString недостаточно?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot