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!
--
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