Ett sätt kan vara att kolla på resultatet du får tillbaka (kanske en array?) och kolla hur många träffar du får. Annars kanske följande kan funka:
(hamster.*){3}
Felet du gör är att {3,} syftar till \w och inte hela uttrycket. Alltså, ordet hamster förljt av 3 eller fler "ord-tecken". (vilket är vad \w står för.)
hamsterxyz och hamsterxyzabc skulle båda matcha men inte hamster xyz eftersom ordet hamster följs av mellanslag som inte är ett "ord-tecken".
Mitt förslag sätter allt inom parenteser vilket gör att det som står inom parentesen eftersöks 3 gånger. .* betyder "matcha 0 eller flera valfria tecken". hamster.* matchar således hamster och hamsterxyz och hamster xyz.
Notera att du bara behöver söka efter tre träffar. Om det är allt du vill veta så behöver du ju inte söka efter en fjärde träff. (Spara lite CPU) Däremot om du vill få ut alla träffar eller veta att det inte finns mer än tre träffar behöver du ett mer avanncerat uttryck.
Jag skulle även vilja föreslå:
(hamst(er|rar).*){3}
...som söker efter tre förekomster av antingen hamster eller hamstrar. T ex hamsterhamsterhallonsylthamstrar eller hamster hamsterpaj något annat hamstrar. (er|rar) söker alltså efter en förekomst av antingen er eller rar.
Välkommen till webForum förresten. :)

