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
