On Thu, 7 Apr 2011, ND wrote:

> Here is pcretest.exe listing:
> 
> PCRE version 8.11 2010-12-10
> /(?=a(*:M))/K
> a
> 0:
> 
> The marked value is not displayed in output. Why? I think it is practically
> useful to keep it's value outside the assertion.

This is a documented effect. In the pcrepattern documentation it says:

  If any of these [backtracking control] verbs are used in an assertion
  or subroutine subpattern (including recursive subpatterns), their
  effect is confined to that subpattern; it does not extend to the
  surrounding pattern. Note that such subpatterns are processed as
  anchored at the point where they are tested.

The answer to your why? question is that because that is what naturally
happens in the code. However, I have just done a test with Perl, and I 
see that it *does* record the mark for your example. So, when I get 
round to it, I will look at the PCRE code to see if it is 
straightforward to make it behave like Perl.

Philip

-- 
Philip Hazel

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

Reply via email to