Boost logo

Boost Users :

From: Gregory Nisnevich (gregnis_at_[hidden])
Date: 2005-07-17 16:12:03


I found another problem, this time, I'm afraid, without a workaround:

regex: (?<=^).{2}|(?<=^...).{2}
string: 1234567890

I get, using boost::regex, only one match:

12

whereas, for example, .Net Regex engine expectedly finds

12

and

45

Is this a bug? If so, any hopes for fixing it in 1.33?

Thank you,

-Gregory

--- John Maddock <john_at_[hidden]> wrote:

> > I'm trying to use lookbehind assertions, and here's a problem: the
> > following syntax
> >
> > (?<=^.{2}).{4}
> >
> > gives me the error:
> >
> > '(?<=^.{2}).{4}' is a bad regular expression: Unmatched [ or [^
> >
> > while the following works:
> >
> > (?<=^..).{4}
> >
> > matching, as I expected, 4 characters after the first 2 characters
> > in a line.
> >
> > Shouldn't the above two regexes work the same way?
>
> Probably, but the lookbehind assertion code is pretty dumb at present: it
> needs to be able to figure out exactly how many characters to look behind in
> advance, and currently bounded repeats aren't supported. It's probably not
> too hard to support that case, but it's too late for 1.33 I'm afraid.
>
> John.
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>

                
__________________________________
Yahoo! Mail
Stay connected, organized, and protected. Take the tour:
http://tour.mail.yahoo.com/mailtour.html


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