Obter uma string através de uma regex

8 respostas
E

Pessoal,

Estou precisando saber como eu verifico se uma string contém uma parte que “satisfaça” uma regex (encontro usando o matches), e se encontrar, como obtenho essa substring que satisfaz essa regex.

Por exemplo, eu tenho uma string “” e a regex “float:[^;|”]+[;"]", quero que me retorne uma string com “float:left;”

8 Respostas

E
Pattern pat = Pattern.compile ("float:[^;|\"]+[;\"]");
String s = "<img src='blablabla' style='valor1;valor2;float:left;'/>";
Matcher mat = pat.matcher (s);
if (mat.find()) {
     String t = mat.group(); // deve receber "float:left;"
}

Atenção: se você não usar “find”, e ir diretamente chamando o “group”, vai dar problemas (porque o “find” é o método que aplica o padrão sobre a string). Então não se esqueça de usar o “find” (o “matches” serve se você quiser saber se a string COMPLETA bate com o padrão).

E

deu certo, valeu cara!

E

mais uma coisinha a esse respeito, quando tem acentuação em algum caracter que a regex retorna, ele substitui por quadrados. Acredito que seja por causa do encoding, como faço para solucionar? Tem como trocar o encoding que a regex interpreta?

E

O problema não é do encoding da regex. Não é na regex que você resolve isso. É na entrada ou saída do seu programa. Internamente todas as operações com strings são feitas em Unicode, portanto é na hora que você passa de bytes para String (ex: quando lê de um arquivo-texto), ou de String para bytes (ex: quando imprime no console), que deve dar problemas.

E

então, eu mandando imprimir a string toda, ela sai certa, mas se eu mando imprimir o resultado do mat.group, ele me sai com quadrados.

E

evefuji:
então, eu mandando imprimir a string toda, ela sai certa, mas se eu mando imprimir o resultado do mat.group, ele me sai com quadrados.
retificando, não são todos os acentos (estou achando muito estranho isso, hehehe)

por exemplo, essa é uma saída “Jos� Alencar (Divulgação)”, quando a string digitada foi “José Alencar (Divulgação)”.

Não faço ideia do que possa ser, alguma sugestão?

E

Isso também é estranho. Eu tenho a mania de converter tudo para bytes e fazer um “dump hexadecimal” dos bytes, para ter uma idéia melhor do que ocorre.

E

encontrei o que é, é o CKEDITOR…

Ao invés dele usar o UTF-8 que eu defini no cabeçalho da página atual, ele está usando o charset do Windows… Sabe como eu posso forçar ele usar UTF-8? Estou usando ele chamando por javascript. Isso porque estou usando ele em conjunto com o richfaces.

Criado 27 de agosto de 2010
Ultima resposta 2 de set. de 2010
Respostas 8
Participantes 2