Bonjour, j'ai un problème avec l'exercice suivant:

Extraction des references d'un chier html. Dans un chier html, les references distantes sont
les valeurs des attributs href des balises <a ...> et les valeurs des attributs src des balise <img ...>. Notons
d'abord qu'une balise peut avoir plusieurs attributs, separes par des (suites d') espaces. Un espace pouvant
^etre, un espace, un saut a la ligne ou m^eme une tabulation... Ensuite, les attributs qui nous interessent sont
de la forme NOM ATTR=arg, ou arg est normalement n'importe quoi (ou presque !) entre doubles quotes " ou
simples quotes '. Le presque veut dire que l'on peut mettre des simples quotes dans un argument cite entre
doubles quotes et des doubles quotes dans dans un argument cite entre simples quotes (ouf !).
Question 1 : Ecrire le chier de description url.lex permettant de recuperer l'ensemble des references
distantes d'un chier html, et uniquement elles.
Par exemple, a partir d'un chier dont le contenu serait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<html
xmlns =" http :// www.w3.org /1999/ xhtml " xml: lang =" fr">
<head ><title > Enseignements </title ></ head >
<body >< div id =" entete "> <img
src ="../ photo .jpg" alt =" photo " width ="131" height ="121" />
<a HREF =" http :// www .lif .univ -mrs .fr">
<img id =" lif" SRC ="../ shared /lif .gif " alt =" Logo LIF " /> </a>
</div ><h1 > Teaching </h1 ><div id =" corps "> <h2 > 3<sup >ieme </ sup >
annee de licence </h2 >
<p> <A href =" https :// tele . ctes .univ - provence .fr/ moodle / course / view .php ?id =179" Compilation </A> </p> <a
href =" http :// www. lif.univ -mrs .fr /~ reyraud /"> Retours </a> </div >
</body > </html >
votre chier doit aboutir au resultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
./ photo .jpg http :// www.lif.univ -mrs.fr ../ shared /lif.gif
https :// tele . ctes .univ - provence .fr/ moodle / course / view .php?id =179
http :// www .lif .univ -mrs .fr /~ reyraud /
.

J'ai donc essayé de créer mon fichier lex contenant mes expressions régulières :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*Section definitions */
%option noyywrap  

balise_ouverte		\<a|\<A|\<img|\<IMG
nom_attribut 		href|HREF|src|SRC
blancs			(\s)*
references		(\"[^"]\")*|(\'[^']\')*
attribut 		{nom_attribut}{blancs}={blancs}{references}\>



%%
{nom_attribut} {printf("%s",yytext);}

%%

#include <stdio.h>
int 
main(int argc, char* argv[])
{
  if ( argc > 1 ) {
    yyin = fopen( argv[1], "r" );
    if(yyin == NULL) {
      fprintf(stderr,"Erreur : %s.\n",strerror(errno));
      exit(EXIT_FAILURE);
    }
    
    yylex();
  }
  fclose(yyin);
  exit(0);
}
Ce sont mes expresions regulières qui posent problème.Si vous pouviez m'aider,merci !