Boost logo

Boost Users :

From: llwaeva_at_[hidden]
Date: 2006-07-27 12:47:39


Hi there,
  I am going to retrieve the following pattern %K{xxx} where xxx can be
anything except line break. I find and modify the following code from
document, is that right for my case?

 boost::regex expK("[^%]*%K{([^\r\n])}");
std::string::const_iterator start, end;
start = sourcesrc.begin();
end = sourcesrc.end();
boost::match_results<std::string::const_iterator> what;
boost::match_flag_type flags = boost::match_default;

 while ( regex_search(start, end, what, expK, flags) )
{
   // handle the match string, i.e. xxx
   my_fun( std::string( what[1].first, what[1].second ) );
   start = what[1].second;
   flags |= boost::match_prev_avail;
  flags |= boost::match_not_bob;
 }

Here, expK found all the substring matching %K{xxx} (not including double % case). But the program didn't give
me what I want, I guess the problem is from the expression where { and } is not expressed correctly. However, I
didn't found how to express { and } in the document. Here is my guess of the correct form, tell me if it is
correct or not

1) boost::regex expK("[^%]*%K\{([^\r\n])\}"); // here \{ represents { and \} represents }
2) boost::regex expK("[^%]*%K[{]{1}([^\r\n])[}]{1}"); // use [{]{1} and [}]{1} to limit the { and } occur once exactly
3) boost::regex expK("[^%]*%K\\{([^\r\n])\\}"); // here \\{ represents { and \\} represents }

which one is correct? or all is wrong?

Please help!

Thanks in advance.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net