On Sat, 12 Sep 2009, ND wrote:

> PCRE documentation says about (*SKIP):
> 
> This verb is like (*PRUNE), except that if the pattern is unanchored, the
> "bumpalong" advance is not to the next character, but to the position in
> the subject where (*SKIP) was encountered.
> 
> Subject string: '0123456789'
> Pattern: (?=....(*SKIP))1
> 
> I waits no matches, but there is a match in position 1. Why (*SKIP) dont
> force the jump to bumpalong='4' after first submatch fails?

This is a documentation omission.

The Perl documentation does not say anything about what happens if *SKIP 
is used in an assertion, but I tested this pattern with Perl 5, and it 
behaves the same way as PCRE.

What happens in PCRE (and I deduce must be the same in Perl) is that an 
assertion is treated like a mini-pattern of its own. So when it tests 
the assertion, it matches the pattern  (?....(*SKIP))  against the 
string, and of course that match always succeeds. So the assertion is 
true and the match happens.

I will update the PCRE documentation to explain this.

Philip

-- 
Philip Hazel

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

Reply via email to