Вы бы исключили , а не в отрицательном утверждении
с учетом длины НЕ в пределах первых 10 символов.
То есть диапазон составляет 10 - length('not')
или {0,7}
\bi\b(?!.{0,7}not)[^.!?]{0,10}\bhate
https://regex101.com/r/vdqBQX/1
\b i \b # 'i'
(?! .{0,7} not ) # Here, exclude 'not' if within the first 7 characters
[^.!?]{0,10} \b # O - 10 characters within this negated class
hate