Quote Originariamente inviata da james101 Visualizza il messaggio
[...] ancora una volta vado a complicare le cose

String[] arr=s.split(" *<|> *| +");

stringa: "<ciao> <mondo> data<e> fine" [...]
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.