(.*?) => Anlamları
. = Herhangi bir karakter
* = Kendisininden önceki karakter sayısı 0 veya daha fazla demek.
? = Normalde önceki karakter olsada olur olmasa da olur demek ama burada anladığım kadarıyla parantezden sonra gelen ilk karaktere kadar yakala anlamında.
(hello)?world derken => worldden önce hello gelebilirde gelmeyebilirde anlamında
<a href="(.*?)" => ise parantezden önce kullanılmış, Bu ise parantezden sonra gelen ilk karakteri yakala. Yani " ve " karakterleri arasındakileri yakalacaktır. ? gelmeseydi büyük bir ihtimal ilk " ve son " arasındaki sonuçları döndürürdü.
Herneyse sorunuzun cevabı:
(\d*?) => 0 veya daha fazla sayı yakalar.
(\d+?) => 1 veya daha fazla sayı yakalar.