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;”
Patternpat=Pattern.compile("float:[^;|\"]+[;\"]");Strings="<img src='blablabla' style='valor1;valor2;float:left;'/>";Matchermat=pat.matcher(s);if(mat.find()){Stringt=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
evefuji
deu certo, valeu cara!
E
evefuji
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
entanglement
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
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.
E
evefuji
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
entanglement
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
evefuji
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.