Alguém pode dar um dica de como especificar via ER como pegar de uma linha de uma String o conteúdo que está dentro de aspas de um … Ou caso enxergue alguma solução com outra forma também seria legal.
Desculpa amigo acho que nao entendi vejamos
você quer pegar o conteúdo que está dentro de e jogar numa string?
abrass
Isso, imagine que você tenha uma String:
String texto = "bla bla bla <img src=""> bla bla bla";
Abraço,
AS
Tenta dar um substring na string e ver as posições
espero ter ajudado
abrass

Substring apenas não funcionaria… Esquecí de falar de um pequeno detalhe não é padrão a qtde. de bla bla bla que vem antes de depois…
Você pode usar uma combinação de indexOf e substring…
Ou então utilizar expressão regular.
Oi, obrigado pela dica… Mas também não daria certo o uso do indexOf pois eu pegaria por um índice que não é fixo ele é variável.
Mas é justamente para isso que você usa o indexOf. Se o indíce fosse fixo, você colocava o valor literal.
Não compreendí, pode exemplificar?
Testei aqui, realmente não vejo possibilidades com o indexOf()…
up
Não é bonito, não sei se é a melhor solução(provável que não), mas funciona. Se quiser saber o que isso faz bora pro google e javadoc:
String htmlCode = "bla bla bla <img src=\"http://www.guj.com.br/\"> bla bla bla";
Pattern pattern = Pattern.compile("<img src=\"(.+)\">");
Matcher matcher = pattern.matcher(htmlCode);
matcher.find();
String imgTag = matcher.group();
matcher = pattern.matcher(imgTag);
System.out.println(matcher.replaceFirst("$1"));
André, sem ups ok?
Oi davidbuzatto, belê? Vou seguir sua solicitação…
marcio_gs, como vai meu brother? Cara, não funcionou acredito que problema está no que ele recebe na prática, veja:
ou invés de:
bla bla bla <img src=“http://www.guj.com.br/”> bla bla bla"
Dei uma mudada na sintaxe da Expressão Regular para:
Pattern pattern = Pattern.compile(“src=”(.+)"");
Agora não está dando mais exception está trazendo quase certinho, veja:
port_9788502095427_oeb_001_r1.jpg" alt=“001” class="imgepub
Deveria ser só o .jpg, como abaixo:
port_9788502095427_oeb_001_r1.jpg
Gente, pensei acredito que a lógica aplicada não é uma das melhores! Digo, é melhor forma seria mesmo pegar pela extensão, exemplo tudo que
termine com .jpg, gif e bmp… Entende? Se terminar numa destas extensões daí pega-se o nome do arquivo, no caso da imagem…
Muito bom, cara. Esse é o caminho mesmo, sua expressão regular ficou boa.
Ele está fazendo isso porque o operador + é “guloso”. Ou seja, ele vai parar só na última possibilidade, que é nas aspas que fecham o valor da propriedade class. O que precisa ser feito é “inibir” a expressão regular, fazendo ela considerar o primeiro match. Para isso basta adicionar uma interrogação após o +. Fica assim:
Pattern pattern = Pattern.compile("src=\"(.+?)\"")
[quote=andredecotia]Gente, pensei acredito que a lógica aplicada não é uma das melhores! Digo, é melhor forma seria mesmo pegar pela extensão, exemplo tudo que
termine com .jpg, gif e bmp… Entende? Se terminar numa destas extensões daí pega-se o nome do arquivo, no caso da imagem…[/quote]
Sua expressão regular é a mais indicada. Ela pega tudo dentro das aspas, indiferente de ter extensão ou não. Basta ajeitar para ela não ir procurando aspas para frente.
marcio_gs, você é fera!
Funcionou perfeitinho, preciso ler mais sobre RegEx. Imaginei que minha lógica estivesse furada pois pensei num cenário em que pudesse ter alguma outra tag que usasse também o src="" na mesma linha daí complicaria… Mas acredito que isso possa acontecer 1 em 1000 hehehe… Antes de executar essa lógica verifico cada linha se existe a palavra-chave “<img” caso exista daí faz a limpeza acima… Vc acho q teria algum problema manter assim?
Abração,
Podes garantir pela própria expressão regular que a tag é img.
Algo como:
Pattern pattern = Pattern.compile("<img.*src=\"(.+?)\"")
Essa expressão regular procura algo que começe como “<img”. O “.*” significa que pode vir uma quantidade indefinida de caracteres até achar src=, inclusive nenhum. Serve para quando src="" não é a primeira propriedade da tag.