Shalom napisał(a)
A mozesz użyc boosta? Bo jeśli tak to tam masz boost::regex i kilka przydatnych zabawek ;)
http://www.boost.org/doc/libs/1_42_0/libs/regex/doc/html/index.html
Dzięki za odpowiedź!
Można spróbować :P. Tylko mam mały problem. Ściągnąłem DevPacka z boostem, zainstalowałem, ale mam problem z linkowaniem (chyba).
Gdy dodaję -lboost_regex - wywala błąd, że nie może znaleźć.
Gdy dodaję -boost_regex - niby wszystko ok, ale kompilacja kończy się: Compilation Failed. Make returned 1
Co jest grane?
Przykład ściągnąłem, gdzieś z neta, żeby tylko sprawdzić czy wszystko działa, kod:
#include <iostream>
#include <boost/regex.hpp>
#include <string>
using namespace std;
bool printRep(const boost::smatch &what)
{
std::cout << what[1] << " "; // Wyświetl na standardowe wyjście pierwsze podwyrażenie.
return true; // Nie zatrzymuj wykonywania pętli for_each.
}
// Wczytaj linię z wejścia i sprawdź czy są w niej powtórzenia "słów",
// a jeżeli są, podaj jakie.
int main() {
// Wyrażenie regularne reprezentujące powtarzające się słowa.
boost::regex rep("(\\<\\w+\\>)(?:\\s+\\<\\1\\>)+");
std::string line;
std::getline(std::cin, line);
// Początkowy iterator dopasowań do wyrażen regularnych.
boost::sregex_iterator begin(line.begin(), line.end(), rep);
// Terminalny iterator dopasowań do wyrażen regularnych.
boost::sregex_iterator end;
// Dla każdego dopasowania wywołaj funkcję printRep.
std::for_each(begin, end, &printRep);
std::cout << std::endl;
system("PAUSE");
return 0;
}