Problema com resultado de expressão regular

1 resposta
A
Pessoal, estou tentando descobrir algumas informações através de um arquivo. Estou fazendo assim:
Pattern pega = Pattern.compile("(oi)*(olá)");
    Matcher m = pega.matcher(textoDoArquivo);

    while (m.find()) {
    //se achar, entra o while
    }  
}
O problema é esse: quando ele encontrar, na linha, uma informação que confere com a expressão (ex: oi alex olá), como eu posso fazer para o Java imprimir a expressão? Ex: se eu tiver em um arquivo o texto
blablabla oi alex olá blablabla
e eu executar o código acima, eu quero que o java imprima no meu prompt isso:
oi alex olá
Alguém sabe como eu faço isso? Tentei usar o m.group(), mas ele sempre retorna " ".

vlw galera :thumbup:

1 Resposta

T

Sua expressão regular está errada. Veja o exemplo abaixo, e corrija sua expressão regular.

import java.util.regex.*;

class TesteRegex {
    public static void main (String[] args) {
        String[] linhas = {
            "Shopping in Italy",
            "Italy has always been the model and master of style,",
            "taste, and class. It is synonymous with fashion,",
            "elegance, design, and most importantly? shopping!",
            "\"Made in Italy\" garments, shoes, and furnishings",
            "are known for their high quality, design, and glamour.",
            "Visitors have so much to choose from among leading national and"
        };
        Pattern pat = Pattern.compile ("sho(.*)nish");
        for (String linha : linhas) {
            Matcher mat = pat.matcher (linha);
            while (mat.find()) {
                // deve imprimir "shoes, and furnish"
                System.out.println (mat.group());
                // deve imprimir "es, and fur"
                System.out.println (mat.group(1));
            }
        }
    }
}
Criado 18 de maio de 2010
Ultima resposta 18 de mai. de 2010
Respostas 1
Participantes 2