UNIVERSITÉ DE CAEN
BUT Réseaux et Télécoms R203
TP3 – manipulation d’expressions régulières (2h)
Exercice 1 regex en ligne
Maintenant que vous avez quelques bases sur l’écriture des expression régulières, le
mieux pour apprendre est de manipuler !
Rendez-vous sur le site interactif [Link] : celui-ci vous propose de
découvrir l’utilisation de regex de manière progressive avec différents exercices à compléter.
N’hésitez pas à utiliser la fiche de synthèse fournie sur Ecampus pour vous aider.
Idéalement, essayez d’aller au moins jusqu’à ”Lesson 9 : All this whitespace”
Exercice 2 regex en Python
Vous trouverez sur Ecampus deux fichiers à télécharger :
— [Link] : il contient l’intégralité du script du film du même nom
— [Link] : il contient un extrait d’un mail brut envoyé par votre secrétaire favorite
1. Ecrire en Python une fonction chercheLignesPrenom(prenom) :
— elle prends en entrée un prénom
— elle parcourt chaque ligne du fichier [Link]
— pour chaque ligne, elle recherche avec une expression régulière si le prénom
passé en argument est présent dans la ligne. Si c’est le cas, elle affiche la ligne
courante.
,→ le but est donc d’obtenir les lignes du script en fonction du prénom donné en
argument. Vous pouvez essayer avec les noms ”Georges”, ”Steven”, ”Peter” ou
encore ”Dave”
>>> c h e r c h e L i g n e s P r e n o m ( ’ Jo ë l ’ )
Jo ë l : A b i t b o l !
Jo ë l : En p u i s s a n c e i n t e l l e c t u e l l e , on va v o i r s ’ que t u vaux .
Jo ë l : Trè s b i e n , c ’ e s t une d e v i n e t t e . Qu ’ e s t ce qui a trois b r a s , un s e u l chapeau [ . . . ]
Jo ë l : Bravo , il la connaissait !
Jo ë l : ( En r e g a r d a n t le c i e l )Oh ç a s e n t la pluie ç a . On va r e n t r e r , et [...]
Jo ë l : Comment peux t u = c r o i r e à d e s conneries pareilles ?
Jo ë l : Je reviens ! Je d o i s y a l l e r !
Jo ë l : a... a...
Jo ë l : A. . . A. . . . a . . a . . a . . . arrrrhhhh
Jo ë l : Ca daube , ç a daube ! !
1
2. Ecrire en Python une fonction chercheQuestionsPrenom(prenom) :
— elle prends en entrée un prénom
— elle parcourt chaque ligne du fichier [Link]
— pour chaque ligne, elle recherche avec une expression régulière : le prénom passé
en argument, et si la phrase contient une question (caractère ?). Si c’est le cas,
elle affiche la ligne.
,→ on veut donc obtenir la liste des questions posées par le personnage passé en
argument dans le film
>>> c h e r c h e Q u e s t i o n s s P r e n o m ( ’ Gael ’ )
Gael : Quoi , du c a l m e ?
Gael : Mais p o u r q u o i t u d i s ç a ?
Gael : Mais o u i , j ’ s u i s un bab , bé a l o r s ? Ca t e dé f r i s e , v i e u x r é ac ’ ? [...]
3. On souhaite maintenant parcourir le fichier [Link] afin d’extraire uniquement
les adresses mail contenues dans celui-ci. La logique est la même que précédemment
mais l’expression régulière est assez complexe à écrire, on va procéder par étapes.
Créer une fonction chercheMails() qui parcoure le fichier [Link] ligne par ligne
et affiche la ligne uniquement si on a un résultat d’expression régulière. Le but est
de commencer par une expression régulière simple, puis de la compléter au fur et
à mesure pour obtenir le résultat final.
>>> c h e r c h e M a i l s ( )
=
i u t . i f s . r t . ens o w n e r @ l i s t e . u n i c a e n . f r
francoise . fior@unicaen . f r
i u t . i f s . rt . e n s @ l i s t e . unicaen . f r
i u t . i f s . rt . v a c a t a i r e s @ l i s t e . unicaen . f r
1 9 6 6 8 5 2 9 5 0 . 2 1 0 6 6 5 3 . 1 6 4 6 1 1 9 5 9 9 6 4 3 . JavaMail . zimbra@unicaen . f r
francoise . fior@unicaen . f r
i u t . i f s . rt . e n s @ l i s t e . unicaen . f r
=
i u t . i f s . r t . ens o w n e r @ l i s t e . u n i c a e n . f r
=
i u t . i f s . r t . ens r e q u e s t @ l i s t e . u n i c a e n . f r
sympa@liste . unicaen . f r
sympa@liste . unicaen . f r
sympa@liste . unicaen . f r
i u t . i f s . rt . e n s @ l i s t e . unicaen . f r
=
i u t . i f s . r t . ens r e q u e s t @ l i s t e . u n i c a e n . f r
i u t . i f s . rt@unicaen . f r
Indications : Format d’un mail : username @ provider . domain
— username est 1 à plusieurs caractères parmi une liste : l’alphabet en minuscules
et majuscules, les chiffres, le caractère tiret, underscore, point, et plus
— provider est 1 à plusieurs caractères parmi une liste : l’alphabet en minuscules
et majuscules, les chiffres, le caractère tiret
— domain est 1 à plusieurs caractères parmi une liste : l’alphabet en minuscules
et majuscules, les chiffres, le caractère tiret et point
,→ ne pas oublier d’échapper le caractère spécial ”point”