Il codice che ho inserito lo fa già praticamente, cambia solo che tu vuoi togliere l'underscore dai caratteri che fanno il match. Quindi al posto di "\\w+", metti "[A-Za-z0-9]+".
Attento che il "+" è fondamentale, sta dicendo di cercare una o più occorrenze consecutive di lettere maiuscole o minuscole o numeri. Se non metti il più a quel punto sì, dividi per ogni lettera.
Se vuoi più informazioni sulle classi di caratteri e i simboli particolari puoi guardare la documentazione della classe Pattern, ovviamente per le espressioni regolari ("regex") trovi poi tutti i tutorial che vuoi.
Se vuoi includere anche parole divise dal trattino è un problema, puoi ovviamente aggiungere il trattino alla classe di cattura ma il matcher non può ovviamente decidere quali siano parole sensate e quali no, senza avere una sorta di "vocabolario" da consultare.
L'unica cosa che puoi stabilire è ad esempio che possa esserci solo un trattino all'interno di una parola e che sia diviso da lettere, o cose del genere.