mailbrush
25.10.2009, 19:34
Сабж... Какой посоветуете компоннент/класс для работы с регулярными выражениями в С++? 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 не смог установить под винду.
А других библиотек не видел...
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 не смог установить под винду.
А других библиотек не видел...