Expressão Regular ajuda (simples)

9 respostas
Deluxe

alguém pode me ajudar com isso?

tenho um valor

id_Conteudo=5_idCategoria=10

queria uma ajuda pra pegar o numerico do (id_conteudo) e o numerico (id_categoria) usando regex

não precisa ser os dois na mesma expressão… pegando um valor já tá bom

9 Respostas

nel

Qual a String (expressão) exata que você quer extrair os valores?

Isso:

id_Conteudo=5_idCategoria=10

Tudo junto mesmo ou seriam duas expressões ali, tipo:

id_Conteudo=5 idCategoria=10

Ou aquele “_” (underline) é um separador? :slight_smile:
Abraços.

Deluxe

na verdade
eu vou receber um valor

id_Conteudo=5_idCategoria=10

ai por exemplo, quero passar como expressão (id_conteudo) e receber o número 5,
a mesma coisa com idCategoria…
é pq não tava afim de fazer substring, pq os números pode ser de vários tamanhos

nel

Vou repetir a pergunta.
Isso aqui: id_Conteudo=5_idCategoria=10

É um único valor? Eu tenho todo esse conteúdo e tenho que extrair os números?
Eu não consigo pensar em uma ER porque não consigo enxergar o que tu quer e o conteúdo exato.

Imagina uma String.

String s = algum valor...

O que tu iria colocar em “algum valor” e que informação gostaria que fosse extraída?

Deluxe

sempre vai ser esse valor… só mudando os númericos

id_Conteudo=5_idCategoria=10
id_Conteudo=7_idCategoria=13
id_Conteudo=89_idCategoria=14
id_Conteudo=43_idCategoria=6

preciso só extrair os númericos…

difosal

IZI só na gambis :smiley:

String expressao = "id_Conteudo";
		//String expressao = "idCategoria";
		String a ="id_Conteudo=89_idCategoria=14";
		if("id_Conteudo".equals(expressao)){
			String[] aa = a.split("_i");
			System.out.println(aa[0].substring(12));	
		}else{
			String[] aa = a.split("_");
			System.out.println(aa[2].substring(12));
		}
Deluxe

vlw parceiro
só uma coisa…

eu vi que tava “meio” fora do padrão

pq tava idCategoria e id_conteudo

fiz um ajuste no conteudo

ficaria assim

CONT_idConteudo=8439_idCategoria=14323

é, eu nao conseguir ajustar teu código, pode me ajudar?

nel

Tem isso.

String s = expressao.replaceAll("\\d+", "");

Isso vai substituir tudo o que não for digito por nada. O problema disso é que vai juntar os números.
Podes substituir por espaço em branco, depois dar um trim no resultado e um split em seguida, para separa-los.

Algo assim:

String s = expressao.replaceAll("\\d+", "").trim();
String[] vet = s.split("[ ]+");
int id1 = vet[0];
int id2 = vet[1];

Tenta ai, veja se te supri. Mas isso ai em uma única expressão regular, eu teria de pensar com mais calma pois não sei te responder agora.

difosal

//String expressao = "CONT_idConteudo"; String expressao = "idCategoria"; String a ="CONT_idConteudo=8439_idCategoria=14323"; if("CONT_idConteudo".equals(expressao)){ String[] aa = a.split("_idCa"); System.out.println(aa[0].substring(16)); }else{ String[] aa = a.split("_"); System.out.println(aa[2].substring(12)); }

l3ug1m

ate pode existir um regex melhor que este …

([a-zA-Z_=]{1,50})([0-9]{1,3})

da um replace pelo grupo 2 e pronto vais pegar o valor id_Conteudo=5 e transformar para 5
se fizer ([a-zA-Z_=]{1,50})([0-9]{1,3})([a-zA-Z_=]{1,50})([0-9]{1,3})
e dar um replace para o grupo 2 e 4 ex: “$2 $4” vais obert “5 10”

Criado 3 de fevereiro de 2012
Ultima resposta 3 de fev. de 2012
Respostas 9
Participantes 4