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?
Hmm, I guess it is a bug, and it's unfixable for 1.33 - it's too close to release for one thing, for another I don't know how to fix it at present: it happens because once the "12" match has been found, searching continues from "34567890", so the matcher doesn't "know" that there are preceding characters before that, that could be matched with the lookbehind. I'd have to start introducing new API's, and some new internals for the regex iterators in order to fix this :-( Thanks for the report, as soon as 1.33 is out I'll try and deal with this. John.