Элемент lookahead (часть (?=
) не потребляет никакого ввода. Это утверждение нулевой ширины (как и граничные проверки и lookbehinds).
Вы хотите регулярное совпадение здесь, чтобы потреблять часть cow
. Чтобы захватить часть между ними, вы используете группу захвата (просто поместите часть паттерна, которую вы хотите захватить в скобках):
cow(.*)milk
Никакие образы не нужны вообще.