Witam.
Programuję głównie w PHP, a tam mam elegancką funkcję preg_match_all, który przeszukuje mi ciąg w poszukiwaniu podciągów, zdefiniowanych we wzorze.
Takie "zwykłe" wyrażenie regularne. Jednak w C++ już takie zwykłe nie są :/
Szukałem trochę i znalazłem jakąś bibliotekę boost.regex, jednak nie bardzo mogę sobie z tym poradzić.
Mógł by mi ktoś napisać przykład, jak tego poprawnie używać? Chodzi mi głównie o przeszukiwanie pliku.
Mam coś takiego
boost::regex re("<a\\s+href=\"([\\-:\\w\\d\\.\\/]+)\">");
string file(bodyfilename);
char buf[BUFSIZE];
boost::cmatch matches;
string sbuf;
string::const_iterator begin;
ifstream inn(file.c_str());
while (!inn.eof())
{
inn.getline(buf, BUFSIZE-1);
sbuf = buf;
begin = sbuf.begin();
while (boost::regex_search(begin, sbuf.end(), matches, re))
{
string url(matches[1].first, matches[1].second);
cout << "URL: " << url << endl;
// Update the beginning of the range to the character
// following the match
begin = matches[1].second;
}
}
Ale wywala mi:
No matching function for call to regex_search
Nie wiem już co z tym zrobić.
Z góry dzięki za pomoc.