Elementos entre tag

24 views
Skip to first unread message

Daniel Gariani

unread,
Nov 29, 2011, 1:59:31 PM11/29/11
to Expressões regulares
Boa tarde pessoal.
Como posso fazer para pegar o valor de uma tag, porém, sem a própria
tag.
<x>teste</x>
Quero apenas o valor 'teste', tudo o que eu consigo fazer eh ou pegar
tudo, ou pegar as tags (ou seja, o inverso daquilo que eu quero,
rsrs), deixando o 'teste' fora.
Nao consegui montar uma estrutura para pegar o 'teste', parece simples
e acho que estou me atrapalhando em algumas definições a respeito de
ER.
Estou usando o Regex do Delphi, vi num dos posts aqui, o uso do \K,
que parece ajudar naquilo que quero, porém, ele não existe para o
Delphi.
Fico grato desde já.

Abraços

Gustavo Dutra

unread,
Nov 29, 2011, 2:15:26 PM11/29/11
to expressoes...@googlegroups.com
Eu não sou muito fã do uso de RegEx para parsear arquivos XML/HTML. Não consigo confiar, simplesmente. Em http://stackoverflow.com/q/590747/1003780 e http://stackoverflow.com/q/701166/1003780 você consegue ler algumas justificativas bem plausíveis.

Tem um cara aqui que escreveu algo interessante http://stackoverflow.com/a/3604016/1003780, entretanto, caso o que você precise seja mais simples. Olhe a resposta aceita à pergunta. Digo isto pois não conheço Delphi, mas a melhor maneira, na minha opinião, seria utilizar algum parser de XML e pegar o conteúdo da TAG através de XPATH.

Voltando a pergunta, veja se

/<x>(.*?)<\/x>/

resolve seu problema.

Abraços,
Gustavo Dutra -
www.gustavodutra.com


2011/11/29 Daniel Gariani <daniel...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Expressões regulares" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para expressoes...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para expressoes-regul...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/expressoes-regulares?hl=pt-BR.


Vitor

unread,
Nov 29, 2011, 6:28:28 PM11/29/11
to expressoes...@googlegroups.com
Concordo que seria melhor usar um parser de xml/dom/etc.

Mas tente algo assim

<([^>]+)>([^<]+)<\/\1>

isso diz pra pegar <"qualquer coisa diferente de >">"qualquer coisa diferente de<"</"a coisa armazenada no grupo 1">
isso supostamente vai sempre pegar o nó mais interno, e desde que ele não contenha outras tags nem argumentos.

meaning:

no caso de <b><i>felicidade</i></b>
ele vai pegar <i>felicidade</i>

mas no caso de <h1>eu sou <b>feliz</b></h1>
ele vai dar match pra <b>feliz</b>

mas se tivermos <h1 style="...">eu sou feliz</h1>
ele não vai dar match.

a menos que alteremos para algo tipo
<([^ >]+)( [>]*)?>([^<]+)<\/\1>

acho que funcionaria mesmo tendo atributos.
é isso, nao testei nada, foi soh rascunhando aqui :P
abraçao!

2011/11/29 Gustavo Dutra <gusta...@gmail.com>



--
Vitor de Araujo Simões (Dalai/Snag)
Estudante de Ciências da Computação - USP

"Computation is the art of building solutions
- at the cost of creating more problems"


http://www.varaujo.com.br
Reply all
Reply to author
Forward
0 new messages