Регулярные выражения (Borland C++ Builder 6)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by mailbrush, 25 Oct 2009.

  1. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Сабж... Какой посоветуете компоннент/класс для работы с регулярными выражениями в С++? PCRE криво работает, что доказывает код:
    Code:
    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 добавляется начальный и конечный символ совпадения.

    В исходную строку ввожу
    Code:
    Hello world!
    В выражение:
    Code:
    Hello .*!
    В Memo1 добавляется
    Code:
    -1
    -1
    Boost Regex не смог установить под винду.

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

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    По моему длинна Hello world! не 4 символа =/
     
    1 person likes this.