Why specify your own special characters? There are special character classes that represent all actual letters or punctuation characters; check out the API of java.util.regex.Pattern for more info.
StringTokenizer will help you.
Below is the code:
String name = "welcome@ to$ java world!";
StringTokenizer tokenizer = new StringTokenizer(name,"@ $");
while(tokenizer.hasMoreTokens()){
System.out.println(tokenizer.nextToken());
}
I'd prefer the character class [\s\W]. \s means whitespace ([ \t\n\x0B\f\r]), whereas \W is a synonym for [^\w] and \w is a synonym for [a-zA-Z_0-9]. Of course you can't use * since then all empty strings between all characters will match as well; the regex will be [\s\W]+. And because \W implies \s, \W+ will suffice.
Of course, once you start using other word characters like é you will run into problems, since that also matches \W.