
As you suspected, the variable-width negative look-behind was the issue. The Microsoft .NET Framework 2.0 supports variable width negative look-behind. Perhaps it's based on your work with GRETA? Again, I appreciate your time. Kindest regards, Michael Primeaux www.i-dynamics-corporation.com -----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Eric Niebler Sent: Tuesday, March 28, 2006 12:49 AM To: boost-users@lists.boost.org Subject: Re: [Boost-users] RegEx Exception Michael Primeaux wrote:
I'm using the latest version of the boost regex libraries and am receiving an exception when using the regex_replace function with the following regular expression:
(?i)(?<!')((<\s*OBJECT\s*[^>]+classid="clsid:[^>]+?(?<!\s*/\s*)>[^*]+? <\s*/\s*OBJECT\s*>)|(<\s*OBJECT\s*[^>]+classid=\s*\"clsid:[^/>]+/))
...which works in other industry standard regex library routines.
I seem to be failing on line 767 of basic_regex_creator.hpp.
Any assistance is appreciated.
If I had to guess, I'd say the problem is "(?<!\\s*/\\s*)". This is a negative look-behind assertion. For most regex engines out there, look-behinds only work for fixed-width sub-expressions, like (?<!foo), which asserts that the previous 3 characters are not "foo". Your's is a variable-width look-behind, and I'm pretty sure Boost.Regex can't handle that. Which other "industry standard" regex library handles this? Perl doesn't allow variable-width look-behinds. The only one I'm aware of which allows this is GRETA (which I wrote many moons ago). -- Eric Niebler Boost Consulting www.boost-consulting.com _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users