Avatar billede pennwilliam Nybegynder
17. oktober 2008 - 13:38 Der er 2 kommentarer

Boost/regex: Søg, gør noget med strengen, og erstat

Hej,

jeg sidder og roder lidt med regex i Boost, hvor jeg skal søge efter en streng, manipulerer strengen hvis den blev fundet og så erstatte den originale streng, med den nye.
Jeg har prøvet at kigge lidt på regex_search, men det er vidst ikke helt det jeg leder efter.

Har i nogen forslag til hvordan det kan gøres?
Avatar billede pennwilliam Nybegynder
17. oktober 2008 - 19:48 #1
Okay, jeg har selv siddet og prøvet lidt med regex_search, men jeg kan ikke rigtigt få det til at virke, hvilket nok har noget at gøre med, jeg ikke rigtigt har kunne finde nogen måder det kan bruges, men har bare prøvet lidt ud fra dokumentationen...

boost::regex expression("a");
boost::match_results<std::string::const_iterator> what;
boost::match_flag_type flags = boost::match_default;
std::string line;
std::string::const_iterator begin, end;
begin = line.begin();
end = line.end();
   
for( int i = 0; i < lines.size(); i++ ) {
    line = lines[i];
    if(boost::regex_search( begin, end, what, expression, flags ) ) {
        std::cout << "yes" << std::endl;
    } else {
        std::cout << "no" << std::endl;
    }
}

Med den der kode sker der bare intet... Den skriver hverken ´yes´ eller ´no´...
Avatar billede pennwilliam Nybegynder
17. oktober 2008 - 19:56 #2
Der var jeg vidst lidt hurtig på aftrækkeren, for jeg fik hul igennem med følgende:

boost::regex expression("a"); // pattern to match the timestampts in a subtitle file
boost::match_results<std::string::const_iterator> what;
std::string line;
   
for( int i = 0; i < lines.size(); i++ ) {
    line = lines[i];
    while( boost::regex_search( line, what, expression ) ) {
        std::cout << "yes" << std::endl;
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester