Eu estou com um problema parecido. Talvez, no seu caso, basta \w.. Tenca ai. Ou [\w\s].(<- esse ponto é final, não faz parte da regex)
Meu problema é o seguinte: eu preciso separar numa frase, o que é nome e o que é número. Não preciso fazer isso ao mesmo tempo, porém tem uma regrinha:
determinar se é número quando tiver
–> número formatado, por exemplo um CPF: 123.456.789-10
–> número puro, se o cpf acima vier: 12345678910, tem que aceitar
–> Se tiver espaço ou letras entre os números, então deve ser considerado como números distintos. Exemplo123456 78910 deve considerar 123456 um número e 78910 outro número. O mesmo se aparecer 123456a78910.
–> deve sempre separar os números quando existir espaços entre eles, independente da quantidade de espaços. Exemplo 12 34 deve pegar os dois números, e 12_______________34 deve pegar os dois número (substitui o espaço por _ para o fórum não corrigir).
Quando eu rodar a expressão para capturar texto, então a regra é:
–> Nomes separados por espaços deve continuar juntos. Por exemplo Ipsum Lorem deve retornar apenas uma string ipsum Lorem. Se for Ipsum, Lorem, nesse caso, retornar duas strings: uma para Ipsum outra para Lorem e ignorar a vírgula e o espaço.
Vamos a um exemplo mais prático. Suponhamos a seguinte entrada de string:
Lorem ipsum dolor 13/04/2012 sit amet 86 consectetuer 123456 adipiscing elit 12.365.478-895 Etiam eget
Ao passar o parser para número, deve me retornar:
-> 13/04/2012
-> 86
-> 123456
-> 12.365.478-895
depois, ao passar o parser para Texto, deve me retornar:
-> Lorem ipsum dolor
-> sit amet
-> consectetuer
-> adipiscing elit
-> Etiam eget.
Então, a regex para número, eu até conseguir fazer, mas a análise do texto eu ainda não conseguir desenvolver.