On Sat, 27 Jul 2019, ND via Pcre-dev wrote:

> It seems last code unit "c" is not detected and so start optimization don't
> work:
> 
> 
> PCRE2 version 10.34-RC1 2019-04-22
> /\Aabc/info,auto_callout
> Capture group count = 0
> Max lookbehind = 1
> Compile options: auto_callout
> Overall options: anchored auto_callout
> First code unit = 'a'
> Subject length lower bound = 3
> abx
> --->abx
> +0 ^       \A
> +2 ^       a
> +3 ^^      b
> +4 ^ ^     c
> No match

For an anchored pattern, the "must be present" code unit value is set 
only if it follows a variable length item in the pattern.

This is a judgement that it will probably be faster in most cases and it 
will avoid the really bad case: suppose, instead of "abx" you have

  abxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...very long string without "c"
  
It can take a lot of time to search a long string (and in fact, for that 
reason, there is a limit to how much is searched, even when there is a 
value to search for). Much quicker to fail the match after just checking 
the first three characters.

Philip

-- 
Philip Hazel

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

Reply via email to