Hi Larry! The error must be somewhere else in your code. The following program behaves exactly as expected: #include <boost/regex.hpp> #include <string> #include <iostream> int main() { boost::match_results<std::string::const_iterator> match; boost::match_flag_type flags = boost::match_default; boost::regex re(std::string("^XXX_(\\d{3})_\\d{3}$"), boost::regex::perl | boost::regex::icase); std::string the_text = "XXX_123_456"; bool rc = boost::regex_search(the_text,match,re,flags); if (rc) { std::cout << "Number is " << match[1] << std::endl; return 0; } std::cout << "No match found" << std::endl; return 1; } --------- max@switters:~/tmp$ g++ test_regex.cpp -l boost_regex max@switters:~/tmp$ ./a.out Number is 123 Am 2014-01-03 18:00, schrieb boost-users-request@lists.boost.org:
Message: 1 Date: Thu, 2 Jan 2014 16:40:55 -0500 From: "Larry" <lknain@nc.rr.com> To: <boost-users@lists.boost.org> Subject: [Boost-users] [Regex] Subexpression matching during search Message-ID: <D06A753E760144CDA0A00B03E0D0DFEE@XV2W> Content-Type: text/plain; charset="utf-8"
I have probably missed something in the doc that answers my query but I just can?t see it.
This is using Perl syntax.
I had a regex:
^(XXX_\d{3,3})_\d{3,3}$
It compiles OK but does not match anything in a regex_search. If I remove the parenthesis
^XXX_\d{3,3}_\d{3,3}$
I get matches. Any clues as to what I am missing?
Extract of regex related code lines:
reg.regex = new boost::regex(reg.reg,boost::regex::perl | boost::regex::icase);
boost::match_results<string::const_iterator> match; boost::match_flag_type flags = boost::match_default; std::string::const_iterator xstart, xend;
xrc = boost::regex_search(xstart,xend,match,*((*rgi).regex),flags);
Larry