Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Регулярные выражения (Borland C++ Builder 6) (https://forum.antichat.xyz/showthread.php?t=151122)

mailbrush 25.10.2009 19:34

Регулярные выражения (Borland C++ Builder 6)
 
Сабж... Какой посоветуете компоннент/класс для работы с регулярными выражениями в С++? PCRE криво работает, что доказывает код:
Код:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
pcre *re;
int options = 0;
const char *error;
int erroffset;
re  =  pcre_compile ((char *) Edit2->Text.c_str(), options, &error, &erroffset, NULL);
if(re)
{
int count = 0;
int ovector[30];
count = pcre_exec(re, NULL, (char*)Edit1->Text.c_str(), 4, 0, ovector, 30);
Memo1->Lines->Add(ovector[0]);
Memo1->Lines->Add(ovector[1]);
}
}

Edit1 - исходная строка.
Edit2 - выражение.
В Memo1 добавляется начальный и конечный символ совпадения.

В исходную строку ввожу
Код:

Hello world!
В выражение:
Код:

Hello .*!
В Memo1 добавляется
Код:

-1
-1

Boost Regex не смог установить под винду.

А других библиотек не видел...

razb 26.10.2009 14:19

Цитата:

count = pcre_exec(re, NULL, (char*)Edit1->Text.c_str(), 4, 0, ovector, 30);
Цитата:

Hello world!
По моему длинна Hello world! не 4 символа =/


Время: 16:12