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.

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. ;)