Pegar dados entre "" , Regex

3 respostas
paulo.ubuntu

Ola pessoal..

tenho uma String assim..

parameters.put("balbalablab",DadosDiretorios.getDirReltorios() +"com/softtradade/rel/rpt.jasper");
gosteria de pegar "balbalablab" e "com/softtradade/rel/rpt.jasper"

estava usando esse código

Pattern pattern = Pattern.compile("\"[a-zA-Z]+\"");

		Matcher matcher = pattern.matcher(conteudo);

		
		while (matcher.find()) {
			System.out.printf( matcher.group());
			
		}
porem ele só resulta a primeira Strng de cada linha... como eu faço para pegar as duas ???

Obrigado

3 Respostas

paulo.ubuntu

NOssa o tópico se duplicou :shock:

peczenyj
"com/softtradade/rel/rpt.jasper"

Não casa com

\"[a-zA-Z]+\"

Pois vc diz claramente: quero uma ou mais ocorrencias de letras entre a e z (maiusculas e minusculas).

na string que vc quer encontrar vc tem / e . (ponto, não o metacaracter . !)

teste esta ER:

\"[a-zA-Z/\.]+\"

ou

\"[^\"]+\" usando lista negada

Lucas_Cavalcanti

esse problema de só estar pegando a primeira linha é pq por padrão as expressões são aplicadas
linha por linha…

se vc quiser que sua expressão pegue mais de uma linha vc tem que colocar a flag (?s) antes da sua
expressão:

Pattern.compile("(?s)[a-zA-Z]+");

existem outras flags, como (?m) (?g) (?i) que são bem úteis também…

Criado 19 de março de 2008
Ultima resposta 19 de mar. de 2008
Respostas 3
Participantes 3