Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

OpenSys

[Resolvido] Regexp's em C com grandes Strings

Recommended Posts

Boas comunidade,

 

Tou a elaborar um programa em C (em linux) e preciso de fazer uma regexp para pesquisar e retirar blocos de texto de um grande string.

 

A função "preg_match" em PHP para para C e o que procuro.

 

A grande string é uma página em HTML.

 

ex: quero obter o texto "myurl" entre: <a>myurl</a> numa string obtida pelo CURL através de um chunk memory.

 

agradeço comentários de uma maneira melhor para o fazer e blocos de código como exemplo.

 

Obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, deixa eu ver se entendi.

 

você terá uma pg HTML, e quer pegar os links?

 

para isso eu faria um html parser, o que não é la muito complicado, afinal, não precisará mostrar nada na tela como um browser faz.

você pode fazer um método que pega o conteúdo de certos tags, uma vez eu tava com o projeto de um webSpider em mãos, não foi muito pra frente pois meus amigos deram pra trás, mas a idéia era parecida.

 

Nós pegavamos as tags: <a href="">, <img src=""> e <script src="">

extraiamos as propriedades href e src.

Assim faziamos um mapa do servidor.

 

em C++, a classe string possui um método find, que é MUITO útil para isso (seria resolvido em poucas linhas).

Como estamos em C, teremos que implementar um método que buscará a sua substring.

 

Existem alguns algoritmos prontos que fazem isso de forma eficiente!

Temos as funções strstr e strchr em mãos, que serão de grande ajuda!

 

http://irc.essex.ac.uk/www.iota-six.co.uk/...chr_strrchr.asp

 

ex da página HTML:

<html>
<head>
<title>teste</title>
<script type="text/javascript" src="../arquivo.js" ></script>

</head>
<body>
<h1> Seu título </h1>

<a href="http://www.google.com">Google!</a>
</body>
</html>
vamos encontrar a posição da sub-string: ' <a href=" ' e guardála em uma variável inicio.

 

a partir do ponto $inicio, vamos buscar as aspas duplas ' " ' que fecham a declaração do link, e guardar a posição numa variável fim.

 

node que a sua substring será pagHTML[inicio:fim]

 

 

Espero que tenho ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vocẽ está no Linux. Existe header que utiliza expressões regulares (veja http://forum.imasters.com.br/index.php...amp;hl=regex.h) e até um modo de procurar isso SEM usar o header regex.h, utilizando um pipe p/ comunicação do resultado (veja http://forum.imasters.com.br/index.php...8&hl=popen).

 

Ainda existe a possibilidade de nem ter que ler o arquivo linha por linha, mapeando em memória.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.