Просмотр вперёд — это проверка того, что идёт после текущей позиции, без включения в результат и без сдвига позиции.
(?=...)
"Найди позицию, после которой идёт указанный паттерн"
# "t" проверяется, но НЕ включается в результат! Строка: c a t _ c a r ↑ ca(?=t) — здесь после "ca" идёт "t"? Да! Результат: "ca" (без t)
(?!...)
"Найди позицию, после которой НЕ идёт указанный паттерн"