------- You are receiving this mail because: -------
You are on the CC list for the bug.

http://bugs.exim.org/show_bug.cgi?id=1619




--- Comment #7 from Philip Hazel <[email protected]>  2015-04-24 11:09:26 
---
On Thu, 23 Apr 2015, Zoltan Herczeg wrote:

> Interestingly, if I add a | the pattern does not match in PERL as well:
> 
> /(ba)a(?!(a)x|)\2(baac)/ does not match baaabaac
> /(ba)a(?!|(a)x)\2(baac)/ does not match baaabaac
> 
> I suspect the first case is special cased in Perl in some way. Or this is just
> a bug.

You have now reminded me that it was this kind of anomalous Perl 
behaviour that made me decide to specify that negative lookarounds do 
not set captures in PCRE.

However, I don't think your example is anomalous because an empty 
branch always matches and so a negative lookahead containing an empty 
branch must always be false:

PCRE2 version 10.20-RC1 2015-03-11
/^(?!a)c/
   cc
 0: c

/^(?!a|)c/
   cc
No match

Perl 5.020002 Regular Expressions

/^(?!a)c/
   cc
 0: c

/^(?!a|)c/
   cc
No match

I misread the original pattern, thinking it was back referencing from
outside the lookahead to an inside capture. However, as Perl is always
changing, I am still going to play around with other examples in Perl to
see whether PCRE2 should change in this respect.

Philip


-- 
Configure bugmail: http://bugs.exim.org/userprefs.cgi?tab=email

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

Reply via email to