Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Extraindo heading tags do HTML

Eae Galerinha,

Fui testa a seguinte expressão <(h1|h2|h3).+?>(.)+<?\/\1?>, porém ele deu o match em todo o trecho do html abaixo, pois pelo que entendi a expressão desde o primeiro h1 até último h1 do trecho, coloque o interrogação no final da expressão para ela parar até encontrar o fim da tag (>), porém não funcionou como eu esperava, alguém pode me ajudar ?

Obs.: Utilizei o http://regexr.com/ para testar a expressão.

<h1 class="logo-topo">teste</h1> class="menu" data-show="false"><ul><li><a href="#box-about-me">About</a></li><li><a href="#box-portfolio">Portfolio</a></li><li><a href="#box-latest-jobs">Work</a></li><li><a href="#box-contact">Contact</a></li></ul></nav><!--/menu--> <span class="menu-mobile"><span></span><span></span><span></span></span><div class="logo"><h1 class="name">fullstack developer</h1>
1 resposta
solução!

O que aconteceu no seu caso foi simplesmente um erro da posição do segundo ?, para que a sua expressão funcione, basta alterar de <(h1|h2|h3).+?>(.)+<?\/\1?> para <(h1|h2|h3).+?>(.)+?<\/\1?>

Tenho uma outra sugestão também, teste a seguinte expressão no mesmo site (http://regexr.com):

<(h1|h2|h3).*?\1>

Não sei se era a ideia que você queria, mas o trecho acima irá encontrar todas as tags informadas no grupo (h1, h2 e h3) e o seu conteúdo.

Explicando a expressão:

  1. < - Procura pelo caracter em questão;
  2. (h1|h2|h3) - Procura pelo grupo de tags;
  3. . - Qualquer caracter, exceto quebra de linha;
  4. * - Nenhuma ou qualquer quantidade da expressão anterior;
  5. ? - Expressão preguiçosa (lazy), torna a expressão anterior (*) não-gananciosa (non-greedy), fazendo com que ela encontre o mínimo possível, parando quando encontrar a próxima expressão;
  6. \1 - Utiliza a expressão do primeiro grupo (nesse caso, (h1|h2|h3));
  7. > - Procura pelo caracter em questão;
 

Testando o trecho abaixo, vemos que a expressão irá pegar apenas as tags informadas e o seu conteúdo:

<h1 class="logo-topo">teste</h1>class="menu" data-show="false"><ul><li><a href="#box-about-me">About</a></li><li><a href="#box-portfolio">Portfolio</a></li><li><a href="#box-latest-jobs">Work</a></li><li><a href="#box-contact">Contact</a></li></ul></nav><!--/menu--> <span class="menu-mobile"><span></span><span></span><span></span></span><div class="logo"><h1 class="name">fullstack developer</h1>
texto texto texto texto texto texto texto texto texto texto texto texto texto texto 
<h3 class="cls">outro teste</h3>texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software