Quote Originariamente inviata da james101 Visualizza il messaggio
in questi giorni ho avuto tempo per testare il mio programma in vari modi ed in effetti quello che mi hai detto tu funziona molto bene ma se volessi che la stringa ciao_ciao venga divisa e quindi avere ciao ripetuta 2 volte come dovrei fare? Ho provato a inserire Pattern.compile("[A-Za-z0-9]") ma il risultato è che divide per singola lettera
E nel caso volessi appunto includere anche agro-alimentare come unica parola che dovrei cambiare?
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.