Regex - ajuda com filtro

3 respostas
MrDataFlex

Pessoal, tenho a seguinte String:

"

André 1987-06-10 38% de aprovação "

A partir desta, preciso criar um objeto do tipo Aluno… porém, me matei para pegar… e ficou um código horrível… alguem poderia me dar um exemplo, mas usando regex, de como recuperar os dados em NEGRITO ?

Obrigado!!!

3 Respostas

peczenyj

Basta usar grupos:

import java.util.regex.*;

public class Find{
        public static void main(String []x){
               String linha  = "<tr><td><a href=javascript:d(13)>André</a></td><td>1987-06-10</td><td>38% de aprovação</td></tr>";
               String padrao = "<a[^>]+>([^<]+)</a></td><td>([^<]+)</td><td>([^<]+)";
               Matcher m = Pattern.compile(padrao).matcher(linha);

               if(m.find()){
                       System.out.println("Nome : " + m.group(1));
                       System.out.println("Data : " + m.group(2));
                       System.out.println("Aprov: " + m.group(3));
               }
        }
}

$ java Find
Nome : André
Data : 1987-06-10
Aprov: 38% de aprovação

A "mágica" está aqui:

>([^<]+)<

isto significa

> caracter literal "maior que"
( inicio de grupo
[^<] um caracter que não seja o "menor que"
+ quantificador "um ou mais"
) fim de grupo
< caracter literal "menor que"

Ou seja, eu quero procurar isso

>Qualquer Coisa entre maior e menor<

E eu tenho um grupo para aqueles caracteres que me interessam. Um grupo pode ser acessado pelo método group da classe Matcher através da sua 'posição'. Basicamente um grupo é algo que diz "ei, esta ER aqui dentro é especial, se liga nela".

MrDataFlex

muitíssimo obrigado! perfeito . parabens

MrDataFlex

Amigo, ainda não estou conseguindo pegar o código… aquele que está d(CODIGO) … pois nao segue a mesma idéia do seu jeito!! tem alguma solucao? :frowning:

abçs

Criado 8 de novembro de 2007
Ultima resposta 8 de nov. de 2007
Respostas 3
Participantes 2