Quote Originariamente inviata da Ansharja Visualizza il messaggio
Ma alla fin fine quello che vuoi fare è solo "estrarre" dalla stringa le parole, in qualunque modo siano esse separate?

Se sì potresti anche cambiare approccio e invece di cercare come spezzarla potresti andare a fare la ricerca del pattern che ti interessa.

Esempio:

codice:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test
{
    public static void main (String [] args) {
        String test = "<ciao> <mondo> data<e> fine";
        Matcher matcher = Pattern.compile ("\\w+").matcher (test);
        while (matcher.find ()) {
            String match = matcher.group ();
            System.out.println ("match:" + match);
        }
    }
    /*     Output:
    
        match:ciao
        match:mondo
        match:data
        match:e
        match:fine
    */
}
Magari è meno immediato, ma se la struttura può variare molto questa soluzione è più sicura a mio modo di vedere.

"\\w" serve per fare il matching con lettere minuscole, maiuscole, numeri e underscore (equivale a "[A-Za-z0-9_]"), puoi limitare la ricerca a sole lettere ("[A-Za-z]") o a qualsiasi altro pattern.
Quote Originariamente inviata da andbin Visualizza il messaggio
Infatti è quello che avevo iniziato a pensare pure io. Però farei il pattern ragionando così: se "<", ">" e più spazi sono i separatori, allora farei una regex che corrisponde ad una sequenza contigua che non contiene questi caratteri.

In pratica:

codice:
Matcher matcher = Pattern.compile("[^ <>]+").matcher(text);


Breve spiegazione: il costrutto [ ] è una "classe" di N caratteri (lì è spazio, < e > ). Il ^ iniziale serve per "negare" la classe di caratteri. E il + quantifica "uno o più".
Alla fin fine: una sequenza di caratteri che NON sono spazi, < e > .
Per il momento non ho il computer sottomano e non posso testare, grazie dell'aiuto ancora una volta, ma il problema è che la mia stringa può avere oltre che "<" ">", qualsiasi altra parentesi o carattere speciale come le virgolette, apostrofi,!,?... ecc ecc.
Ad esempio la parola "l'altro" la dovrei spezzare in "l" e "altro" eliminando quindi l'apostrofo. In questo caso come si comporterebbe il matcher?