Re: [pcre-dev] (DEFINE) problem

Top Page
Delete this message
Author: Philip Hazel
Date:  
To: ND
CC: Pcre-dev
Subject: Re: [pcre-dev] (DEFINE) problem
On Sat, 12 Dec 2009, ND wrote:

> Hi, Philip!
>
> I use PCRE 8.0
>
> pattern: (?(DEFINE)(?<s>(i)))(?&s)
> subject: pi
> result: match, but no subpatterns captured
> expected: 'i' returned as subpattern
>
> Is this planned behavior?


Yes. And it is the same behaviour as Perl 5 (I have just tested). In the
section entitled SUBPATTERNS AS SUBROUTINES in the pcrepattern man page,
there is this paragraph (note the final sentence):

    Like recursive subpatterns, a subroutine call is always treated as
    an atomic group. That is, once it has matched some of the subject
    string, it is never re-entered, even if it contains untried
    alternatives and there is a subsequent matching failure. Any
    capturing parentheses that are set during the subroutine call revert
    to their previous values afterwards.


Philip

--
Philip Hazel