> 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