Pergunta

Eu estou tentando escrever uma expressão regular para o meu parser html.

Eu quero corresponder a uma tag HTML com determinado atributo (eg. <div> com class="tab news selected") que contém um ou mais tags <a href>. A regexp deve coincidir com a tag inteira (de <div> para </div>). Eu sempre parecem ter "memória esgotada" erros -. Meu programa provavelmente leva cada tag pode encontrar como uma harmonização

Eu estou usando bibliotecas de regex impulso.

Outras dicas

Você provavelmente deve olhar em esta questão re. regexps e HTML. A essência é que o uso de expressões regulares para analisar HTML não é por qualquer meio uma solução ideal.

Como já foi dito, não use expressões regulares, se possível. Se o código é realmente XHTML (ou seja, também é bem-formado XML) aI pode recomendar a Xerces e Expat analisadores XML, o que irá fazer um trabalho betterv muito para você do que expressões regulares.

Talvez regexps não são a melhor solução, mas eu já estou usando como cinco bibliotecas diferentes e impulso faz muito bem quando se trata de localizar marcas <a href> e palavras-chave.

Estou usando esses regexps:

/<a[^\n]*/searched attribute/[^\n]*>[^\n]*</a>/ para localizar marcas <a href> e:

/<a[^\n]*href[[^\n]*>/searched keyword/</a>/ para a localização de ligações

(BTW ele pode ser feito melhor - eu chupar a regex;?))

O que eu preciso agora é localizar as etiquetas contendo <a href> de e acho regexps vai fazer tudo certo - talvez eu preciso escrever minha própria função de análise como Piotr disse.

Do como Flex faz: jogo

com um jogo insensível caso, e colocar o seu analisador em um estado "div combinado", mantenha entrada processamento até
e estado de reset

.

Isso leva dois regexps e uma variável de estado.

SGML marca caracteres válidos são [A-Za-z _:]

Assim: / <[A-Za-z _:] +>. / Corresponde a uma tag

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top