Boost logo

Boost Users :

From: Christopher Hart (hartct_at_[hidden])
Date: 2006-05-21 15:57:32


I've run into a problem where I'm getting an "Invalid content of
repeat range" when attempting to match a string using greediness and
capture operators. I'm using the following function (basically taken
from the "print captures" example in the regex docs):

void find_matches(const std::string& regx, const std::string& text)
{
        boost::regex e(regx, boost::regex::perl);
        boost::smatch what;
        std::cout << "Expression: \"" << regx << "\"\n";
        std::cout << "Text: \"" << text << "\"\n";
        if(boost::regex_match(text, what, e)) //, boost::match_extra))
        {
                ... [snip] ...
        }
        else
        {
                ...
        }
}

... invoked by:

find_matches(html, "<p class=\"priceBest\"><a href=(.*?)>");

The pattern I'm trying to match is working in Perl program (e.g. if
($html =~ m|<p class="priceBest"><a href=(.*?)>|gs) {...} ), so it
seems like the pattern should be syntactically correct. I'm building
on Mac OS X 10.4 (Intel) with Boost 1.33.1.

I'm new to Boost and probably spoiled by Perl pattern matching, so I'm
guessing I'm missing something simple. Any help or suggestions are
appreciated!

Thanks,
Chris Hart


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