The problem is that the asterisk can generate an empty string ( "" ), and you can say that there is an empty string between each character and the next .
Given a regex:
a(?![^3]*)
and you ask with a33333 , you more or less say: reject if after a there are zero or more non-3 repetitions, but there is such a repetition: an empty string, so even without capturing one 3 , it will reject. The match looks like this:
a (?![^3]*) "a" "" "33333"
(quotes mark lines and are not characters here)
Thus, you can say that the negative look of the regular expression over the Klein star will always be rejected (you have to be careful, in the sentence I mean that the Klein star is combined over the "whole" regular expression, this does not mean that the negative look containing Klein star will always be rejected).
Your image also shows this:

He says that if you do not follow, it means that he cannot correspond to what is inside the field. The problem is that you do not need to take a single character to reach the end of the window.
This fails for a(?![^3]*7) : here you say: "* reject if you encounter zero or more non-3 followed by seven. Since the regular expression [^3]*7 not matches 3333335 , then the lookahead will not reject the match.
Willem van onsem
source share