Problema com REGEX

5 respostas
rodrigo_lm

Olá pessoal, estou quebrando a cabeça com uma expressão regular, mas não estou conseguindo resolver.

Tenho a seguinte string: @A1Teste de / string~’ @B1 Teste

Eu preciso retirar tudo que começa com @A1, então o final seria @B1 Teste

Eu tentei fazer da seguinte forma: string.replaceAll("@A[0-9][\w|\s]*", “”)

O problema dessa instrução é que não aceita /, ou ~. e para colocar todos os caracteres ficaria meio inviavel, pois são varios criterios. Não é possivel fazer string.replaceAll("@A[0-9].*@", “”), pq o final ou seja a ultima @ não iria sair.

Alguem tem alguma sugestão de como posso resolver isso com regex.

5 Respostas

G

rodrigo_lm:
Olá pessoal, estou quebrando a cabeça com uma expressão regular, mas não estou conseguindo resolver.

Tenho a seguinte string: @A1Teste de / string~’ @B1 Teste

Eu preciso retirar tudo que começa com @A1, então o final seria @B1 Teste

Eu tentei fazer da seguinte forma: string.replaceAll("@A[0-9][\w|\s]*", “”)

O problema dessa instrução é que não aceita /, ou ~. e para colocar todos os caracteres ficaria meio inviavel, pois são varios criterios. Não é possivel fazer string.replaceAll("@A[0-9].*@", “”), pq o final ou seja a ultima @ não iria sair.

Alguem tem alguma sugestão de como posso resolver isso com regex.

Desculpa,

nao entendi direito. Vc quer tirar tudo que esteja entre @A1 e @B1?

maniacs

Você parece saber usar ER mais eu sempre aconselho (eu mesmo olho) quando esta com duvida de como seria melhor forma
de usar a ER ler o Guia-ER
sempre ajuda para simplificar as ER

rodrigo_lm


Desculpa,

nao entendi direito. Vc quer tirar tudo que esteja entre @A1 e @B1?

Na verdade o @A1 é o delimitador da minha string. eu vou ter uma string grande tipo @A1 TESTE @A2 TESTE @A3 TESTE @B1 TESTE @B2 TESTE @C1 TESTE @D1 TESTE e por ai vai… E eu preciso arrancar tudo que comece, por exemplo, com @A, ou em outro caso, com @B, pq cada @LETRA representa um bloco de informação.

O problema é que não estou conseguindo retirar esses blocos quando aparece algum caracter especial no meio da string ( / , - , ~ , etc).

maniacs, obrigado pelo site, vou dar uma olhada, mas creio que estou bobeando na logica da ER.

Obrigado…

Guilherme_Gomes

Não sou muito bom em REGEX avançado, mas tenta isso:

replaceAll("@A[0-9][^@]*","");

Não sei se é isso que voce precisa, ou simplesmente:

replaceAll("@[A-Z][0-9]","");
rodrigo_lm

Muito obrigado Guilherme Gomes, era exatamente isso que eu precisava.

Realmente era um erro de logica, eu estava tentando permitir o q eu queria, ao inves de restringir o que eu não queria.

Obrigado.

Criado 28 de dezembro de 2007
Ultima resposta 2 de jan. de 2008
Respostas 5
Participantes 4