Erro em expressao regular [RESOLVIDO]

Boa tarde pessoal.

Já deu uma boa olhada e não encontrei um explicação que fosse exatamente o que eu procuro.

a situação é a seguinte tenho a uma string conforme a baixo:

133,False,1,1,NT EMF 1.008,True,True,"http://portal/SiteDirectory/SAR/_layouts/PrintIssueTracking.aspx?List={ca506e9b-f61a-4d87-abf0-b243cc477dad}&ID=6816",Lexmark X264dn,False,363300,False,\\192.168.12.51,paula,False,2970,False,9,,False,7,True,Lexmark X264 - SAR,1200,1200,False,LMACJL4C,1,1593,False,Printed,14/5/2012 07:50:46,paula,,

Quero utilizar somente esta parte :

"http://portal/SiteDirectory/SAR/_layouts/PrintIssueTracking.aspx?List={ca506e9b-f61a-4d87-abf0-b243cc477dad}&ID=6816"

Para verificar se tem virgula e ponto e virgula.

Porem como voces podem perceber tem chaves na string, entao tive que colocar no “compile” (\x3D*)(\x7B*)(\x7D*)
Nem sei se desta forma esta certo, porem entrou no while, ou seja encontrou a expressao.

                while ( bf.ready() ) { 
                    linha = bf.readLine();
                    Pattern caract = Pattern.compile("\".*(\\x3D*)(\\x7B*)(\\x7D*)\"");  
                    Matcher m = caract.matcher(linha);
                    while (m.find()) { 
                         System.out.println("group "+m.group().toString());
                         linha = linha.replaceAll(m.group(), m.group().replaceAll(",", ""));  //linha 53 at br.printevocount.writers.UsingCsv.readingCsv(UsingCsv.java:53)
                         linha = linha.replaceAll(m.group(), m.group().replaceAll(";", ""));    
                         System.out.println("linha ini "+linha);                            
                    }

Esta dando o seguinte erro:

run:
group "http://portalclemar/SiteDirectory/SAR/_layouts/PrintIssueTracking.aspx?List{ca506e9b-f61a-4d87-abf0-b243cc477dad}&ID=6816"
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 75
"http://portal/SiteDirectory/SAR/_layouts/PrintIssueTracking.aspx?List{ca506e9b-f61a-4d87-abf0-b243cc477dad}&ID=6816"
                                                                                                   ^
	at java.util.regex.Pattern.error(Pattern.java:1713)
	at java.util.regex.Pattern.closure(Pattern.java:2775)
	at java.util.regex.Pattern.sequence(Pattern.java:1889)
	at java.util.regex.Pattern.expr(Pattern.java:1752)
	at java.util.regex.Pattern.compile(Pattern.java:1460)
	at java.util.regex.Pattern.<init>(Pattern.java:1133)
	at java.util.regex.Pattern.compile(Pattern.java:823)
	at java.lang.String.replaceAll(String.java:2189)
	at br.printevocount.writers.UsingCsv.readingCsv(UsingCsv.java:53)
	at br.printevocount.writers.UsingCsv.main(UsingCsv.java:129)
Java Result: 1

Não sei muito de expressão regular por isso estou com estes problemas.

Agradeço qualquer ajuda.

você quer analisar somente a parte que está entre aspas duplas? e dentro dela só quer tirar as vírgulas e os ponto e vírgula que existirem?

Essa é a única parte dessa String a possuir aspas?

Sim somente esta parte, sim somente esta area vai ter aspas.

O detalhe é que se eu remover as chaves, funciona.

Ou seja o erro esta na parte {um monte de coisa}.

Obrigado.

Tenta assim: Pattern pattern = Pattern.compile("\".*\""); Matcher matcher = pattern.matcher(str); String saida = ""; while(matcher.find()){ System.out.println(matcher.group()); saida = matcher.group().replaceAll(",",""); saida = saida.replaceAll(";", ""); } System.out.println(saida);

Alguns cuidados em relação à essa regex, ela está pegando tudo o que existir entre as aspas, então qualquer vírgula e ponto e vírgula será removido.
Não sei se é isso que você quer, ou se quer algo mais específico.

Ola, na verdade ja estaria funcionando se eu estivesse usando: replace ou inves de replaceAll:

                        while (m.find()) { 
                            System.out.println("group        : "+m.group().toString());
                            linha = linha.replace(m.group(), m.group().replaceAll(",", "")); //linha.replaceAll
                            linha = linha.replace(m.group(), m.group().replaceAll(";", "")); //linha.replaceAll   
                            System.out.println("linha ini "+linha);                            
                        } 

Obrigado digaoneves.