Il "+" significa "almeno un'occorrenza", mentre l'asterisco significa "zero o più occorrenze".
La RegEx che hai scritto per il nome (patNomi) pretende che vi sia almeno un carattere che non sia fra quelli elencati... ma almeno un carattere ( + ).

Io proverei con questa:

codice:
Pattern patNomi = Pattern.compile("\\w*|(\\w+ \\w+)*");
Una RegEx composta da due sotto-espressioni in alternativa tra di loro
codice:
\w*
qualunque carattere non whitespace zero o più volte (qui accetto anche la stringa vuota)

oppure

codice:
(\w+ \w+)*
almeno un carattere non whitespace seguito dallo spazio, seguito a sua volta da almeno un carattere non whitespace. L'intera sequenza può essere ripetuta più volte (così riesco ad intercettare anche i cognomi doppi: De Rossi Daniele).


Ciao.