Expressões regulares

Boas pessoal,

String toPaint=“João Pedro”;

Pattern p = Pattern.compile("\W");
String[] result = p.split(toPaint);

O erro que me acontece é que o “\W” baralha se com “~” divindo a palavra joão?
existe alguma maneira de definir enconding?Como posso corrigir este problema?

[quote=Topas56]Boas pessoal,

String toPaint=“João Pedro”;

Pattern p = Pattern.compile("\W");
String[] result = p.split(toPaint);

O erro que me acontece é que o “\W” baralha se com “~” divindo a palavra joão?
existe alguma maneira de definir enconding?Como posso corrigir este problema?

[/quote]

Amigo \W significa casar com (não palavra) (tudo fora [a-zA-Z0-9]+) classe posix [^[:alnum:]_] , em java classe posix [^\p{Alnum}]. Em algumas linguagens essa classe leva em conta a Locale do sistema, no Brasil a classe alnum deveria pegar as letras acentuadas e defini-las como palavras, fiz alguns testes adicionando o default locale para Brasil em java e não deu certo. O robo não define alnum com letras acentuadas.
Mas o que você deseja fazer com a palavra “João Pedro”?

Eu so desejo partir a string em palavras.

Só que quando eu uso caracteres com “~”,“´” não consigo partir a string em palavras.

Eu so queria partir um string por palavras…mas quando uso acentos nas palavras a partição da string não funciona:?

Ex:

String toPaint=“João pedro maio de cástro áte ó óadr”;
Pattern p = Pattern.compile("\w");
String[] result = p.split(toPaint);

Experimente usar “[^\p{L}]” em vez de “\W”

Já funcionou … muito obrigado ! :smiley: