DaniloAndrade 19 de abr. de 2012
Bom dia,
tenta assim acho que vai te ajudar
para teste em minha maquina tive que escapar as aspas e o \ que vem antes do fabiano
String texto = "34;False;1;1;\"NT EMF 1.008\";True;True;\"COMO, CONFIG;;RAR.txt - Bloco de notas\";\"Generic / Text Only\";False;172;False;\"\\\\FABIANO-151AC4E\" " ;
Pattern pattern = Pattern . compile ( "(\".+?\")" );
Matcher matcher = pattern . matcher ( texto );
while ( matcher . find ()){
texto = texto . replaceAll ( matcher . group (), matcher . group (). replaceAll ( ";" , "" ));
System . out . println ( "group " + matcher . group (). toString ());
System . out . println ( "linha " + texto );
}
se vc estiver lendo de um arquivo, fazer escape de caracteres não vai ser necessario.
espero ter ajudado
Rodrigo_Sasaki 19 de abr. de 2012
desculpa a ignorância… não entendo muito de expressões regulares… mas com esse pattern
Pattern pattern = Pattern . compile ( "(\".+?\")" );
você não ta pegando todos os caracteres ao invés da parte isolada que ele quer?
DaniloAndrade 19 de abr. de 2012
sim, todos os caracteres que estiver entre aspas
o que ele que é dentro da string passada pegar o conteudo que esta entre aspas e substituir os “;” por vazio
Rodrigo_Sasaki 19 de abr. de 2012
entendi… achei que ele queria só naquele trecho que ele especificou
cardosao 19 de abr. de 2012
Bom pessoal acabei de chegar de um cliente e vou testar e posto pra voces se der ou errado.
abraços.
ul1sses 19 de abr. de 2012
import java.io.BufferedReader ;
import java.io.File ;
import java.io.FileReader ;
import java.io.IOException ;
import java.util.regex.Matcher ;
import java.util.regex.Pattern ;
public class TesteRegex {
public static void main ( String [] args ) throws IOException {
BufferedReader br = new BufferedReader ( new FileReader ( new File ( "teste.txt" )));
String linha ;
while (( linha = br . readLine ()) != null ) {
String regex = "\".*?\"" ;
Pattern p = Pattern . compile ( regex );
Matcher m = p . matcher ( linha );
while ( m . find ())
System . out . println ( m . group () + " Posicao: " + m . start () + "-" + m . end ());
}
}
}
Arquivo teste.txt:
34 ; False ; 1 ; 1 ; "NT EMF 1.008" ; True ; True ; "COMO, CONFIG;;RAR.txt - Bloco de notas" ; "Generic / Text Only" ; False ; 172 ; False ; "\\FABIANO-151AC4E"
Saída:
“NT EMF 1.008” Posicao: 13-27
“COMO, CONFIG;;RAR.txt - Bloco de notas” Posicao: 38-78
“Generic / Text Only” Posicao: 79-100
“\FABIANO-151AC4E” Posicao: 117-136
Não está muito refinado mas dá pra dar uma idéia né.
cardosao 19 de abr. de 2012
Boa noite pessoal.
Bom usei essas formas que voces apresentaram, mas quando mudava o nome do documento, dava alguns erros, e como retornava muitas frases ficava dificil resolver. Então resolvi pagar para o programador que desenvolveu este aplicativo que gera csv para modificar e agora ele filtra os caracteres como ponto e virgula, retirou todas as aspas deixando somente no campo nome do documento, e deixou como delimitador a virgula, assim ficou bem mais facil e consegui resolver.
Pattern caract = Pattern . compile ( "\".*\"" );
Matcher m = caract . matcher ( linha );
while ( m . find ()) {
Agradeço a todos que fazem esta comunidade.