Ola a todos, estou lendo um arquivo cujas linhas estao com o formato abaixo, sendo que os valores entre as aspas duplas sao separados por um caracter de tabulação:
//linha do arquivo
"vinicius" "fernandes" "estudante" "brasileiro"
e preciso extrair as informações que estao no interior das aspas duplas. Estou tentando fazer isso utilizando expressões regulares, da seguinte maneira:
//essa String foi construida para simular o problema da leitura das linhas do arquivo
String linha = "\"vinicius\"\t\"fernandes\"\t\"brasileiro\"";
String[] x = linha.split("\"\t\"");
e a saida que tenho eh:
"vinicius
fernandes
estudante
brasileiro"
Observem que as aspas dos extremos permanecem! Esse eh o problema…rsrrs. Aceito sugestoes!!!
Valeu
Oi
Tenta fazer isso
Pattern p = Pattern.compile("[\" \t]+");
String[] linha = p.split("\"vinicius\"\t\"fernandes\"\t\"brasileiro\"");
for (int i=0; i<linha.length; i++) {
System.out.println(linha[i]);
}
Otimo…funcionou!!! Porem ainda me resta uma dúvida: qual é a leitura correta para a regex [" \t] que voce construiu?
Para pegar o resultado entre as aspas…
[code] String fonte = ““vinicius”\t"fernandes”\t"brasileiro"";
Pattern p = Pattern.compile("\"([^\"]*)\"");
Matcher m = p.matcher(fonte);
while (m.find()) {
System.out.println(m.group(1));
}[/code]
Acredito que assim fica melhor, pq vc vai pegando o resultado a medida que passa navega pela string, e só pega o resultado real, e com o splint acima, vc fica com o primeiro elemento em branco…
nesse meu regex, ele vai buscar o seguinte… no inicio uma " … no interior 0 ou mais caracters que não seja uma " … e depois outra "… e o m.group(1)… vai pegar os elementos que batem com o que esta entre parentese (["]*) que é os todos os caracters entre as aspas, que não são aspas ^^
As contrabarras tornam meio ilegivel o regex, mais ele ta escrito assim ==>> "([^"]*)" … ou seja… o gropo entre parentese quer dizer, 0 ou mais caracters * que não sejam ^ uma aspa dupla [^"]
não sei c expliquei direito + ta ai