Groupe de capture optionnel Regex?

Après des heures de recherche j'ai décidé de poser cette question. Pourquoi cette expression régulière: ^(dog).+?(cat)? ne fonctionne pas comme je pense que cela devrait fonctionner (capturer le premier chien et chat si il est tout)? Ce qui me manque ici?

dog, cat
dog, dog, cat
dog, dog, dog

source d'informationauteur forsajt