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.
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´...
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; } }
Synes godt om
Ny brugerNybegynder
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.