> If DOTALL is set the result is the same. It seems that is_anchored() is in 
> action. I think PCRE must not assume such patterns as anchored.

No.

   /* .* means "start at start or after \n" if it isn't in brackets that
   may be referenced. */

   else if (op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR)
     {
     if (scode[1] != OP_ANY || (bracket_map & backref_map) != 0) return FALSE;
     }

This assumption is wrong for those .*-s, which are inside an atomic block, or 
bactracking is broken by some recursive control verb like this one:

  re> /.*?a(*PRUNE)b/
data> aab
No match
data>
  re> /(*NO_START_OPT).*?a(*PRUNE)b/
data> aab
 0: ab

Regards,
Zoltan


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

Reply via email to