
"SourceForge.net" <noreply@sourceforge.net> wrote in message news:E1HTz9p-0006qo-ID@sc8-sf-web21.sourceforge.net...
Bugs item #1685103, was opened at 2007-03-21 06:39 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=107586&aid=1685103&group_id=7586
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: regex Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: krankurs (krankurs) Assigned to: John Maddock (johnmaddock) Summary: regex_match throws exception
Initial Comment: Running: MS Windows XP with pack 2, boost_1_33_1, MS VS 2005, VC++ console app, BOOST_REGEX_DYN_LINK; Multi-threaded Debug DLL (/MDd)
boost::regex site_url_regex("http(s?)://((\b(?:\d{1,3}\.){3}\d{1,3}\b)|(www(.[a-z0-9]+)+.mydomain.com))");
boost::regex_match("http://www.appwebsite1.mydomain.com", site_url_regex);
returns true; (as expected)
boost::regex_match("http://www.appwebsite1.mydomain.com/1234", site_url_regex);
returns false; (as expected)
boost::regex_match("http://www.appwebsite1.mydomain.com/12345678/12345678/", site_url_regex);
throws exception, - expected false
Thank you, Leonid
Other than the escape characters not being escaped in the example above, correct code follows: --- boost::regex site_url_regex("http(s?)://((\\b(?:\\d{1,3}\\.){3}\\d{1,3}\\b)|(www(.[a-z0-9]+)+.mydomain.com))"); boost::regex_match("http://www.appwebsite1.mydomain.com/12345678/12345678/", site_url_regex); --- ... this actually does highlight an apparent bug/deficiency. A much simpler example is given below: --- boost::regex test_regex("(?:.[a-z0-9]+)+"); boost::regex_match("www.appwebsite1.mydomain.com/1/1/", test_regex); --- This throws the same exception, at least in a VC 8.0 build using the DLL version of the reg-ex lib (debug), in perl_matcher_non_recursive.hpp at line 164 (raise_error(traits_inst, regex_constants::error_space);), because the state_count is 107429 and the max_state_count is 107425. Michael Goldshteyn