On Sun, 22 Jan 2012, ND wrote: > Let whole string be 'abc' and we want to test it against pattern > '(?!b)(?<=a)'. If we apply this pattern to whole string (without 'partial > hard') then result will be 'no match'. > Now let this string arrive to application by two chunks: 'a' and 'bc'. > Applying first chunk with 'partial hard' option results 'match'. Thus in this > case we finded that whole string 'abc' matches. This contradict with expected > result.
I do understand what you want. The current behaviour does not give you what you want. However, I do not want to change the current behaviour (or at least not much) because that would be incompatible and probably somebody would get caught out. Therefore: to give you what you want we must invent some new option, or perhaps make NOTEOL affect \Z and \z (a smaller incompatible change). What you need is for pcre_exec to know *for sure* that it does not have the end of the subject string. Currently, setting partial matching does not give it that absolute assurance. Even so, there is the problem of returning a zero-length partial match. I do not like this because, for a non-anchored pattern, you can *always* (well, almost always) find a zero-length partial match. Consider something simple like /abcd/ matched partially against "xyz". If zero-length partial matches are permitted, it would return a partial match at the end of the string, instead of no match. Is that useful? I have assumed that it is not useful. Philip -- Philip Hazel -- ## List details at https://lists.exim.org/mailman/listinfo/pcre-dev
