1. Si necesitas capturar todo usa preg_match_all()
2. La expresión [\w|\W]+ para empezar está mal escrita, los [] no sirven para diferenciar como OR, para eso son los paréntesis en si.
![borracho](http://static.forosdelweb.com/fdwtheme/images/smilies/borracho.png)
2.1. Si lo que necesitas es capturar un número entonces declara la expresión para eso, tan simple como usar \d+ y listo.
3. Por favor, consulta un referencia de expresiones regulares, te salvará la vida. ;)