On Thu, 1 Oct 2009, Craig Silverstein wrote:

> We have this behavior:
>       // advance one character if we matched an empty string at the same
>       // place as the last match occurred

What Perl and pcredemo (and pcretest) do is first to check whether there 
is a non-empty alternative match at the same point, before advancing by 
one character.

> Likely so.  It sounds complicated, though. :-)  It would be best if
> someone who understood both what perl was doing, and C++, could make a
> go at any change, assuming one is needed.

Indeed yes. Any volunteers reading this???

I think the change might be needed in order to get Sheri's \K example
right. \K resets the "start of match" point to "here", so a pattern such
as abc\K matches "abc", but reports a match of the empty string at
offset 3. The example that started this all off was abc\K|def\K matched
against "abcdefghi". Replacing the matches with "-" should yield
"abc-def-ghi". I suspect your present code won't yield that, because it
will advance past "d" after the first change.

Philip

-- 
Philip Hazel

-- 
## List details at http://lists.exim.org/mailman/listinfo/pcre-dev 

Reply via email to