:: Enseignements :: ESIPE :: E4INFO :: 2007-2008 :: Compilation ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Introduction aux expressions rationnelles |
Le but de ce TD est d'écrire des expressions rationnelles
caractérisant un ensemble de lexèmes, puis d'écrire des programmes
Java permettant de les trouver.
Exercice 1 - La commande grep
Taper une commande
shell utilisant
grep qui
recherche dans la sous-arborescence de
/etc:
- les lignes contenant la chaîne de caractères IPV6 sans
tenir compte de la casse ;
- les lignes qui commencent par une variable en majuscule suivie
de = ;
- les lignes qui ne contiennent qu'une chaîne de caractères
alphabétiques, éventuellement entourée d'espaces ou de tabulation.
La documentation des expressions rationnelles de
grep est
accessible à partir de l'URL suivant :
http://www.gnu.org/software/grep/doc/grep_7.html#SEC7
Exercice 2 - Expressions rationnelles
Dans cet exercice, pour tester vos expressions rationnelles, vous
utiliserez le programme
visual regexp
dont les expressions rationnelles ont une syntaxe rappelée par une
aide succincte accessible
via le menu
View -> Show
regexp help
Écrire des expressions rationnelles pour reconnaître:
- les identificateurs du C (ils commencent par une lettre ou un _, puis une suite
de chiffres, lettres ou _) (voir exemple)
;
- les chaînes de caractères du Pascal (' ... ' avec '
' pour faire une apostrophe) ;
- les chaînes de caractères du C ;
- les entiers (décimal, hexadécimal 0x... et octal
0...) (voir exemple) ;
- les commentaires du C (/* ... */ et // ...)
(voir exemple).
Exercice 3 - Le paquetage java.util.regex
En utilisant les classes
Pattern
et
Matcher
du paquetage
java.util.regex,
écrire un programme qui reconnaît dans les lignes d'un fichier passé en argument
les URL HTTP de la forme
http://user:passwd@machine:port/path
et qui affiche, s'ils existent, l'utilisateur, le mot de passe, la
machine, le port
et le chemin.
La syntaxe des expressions rationnelles Java est décrite dans la
documentation de la classe
Pattern.
Celle-ci est proche de celle de
PERL.
Pour lire un fichier lire par ligne, utiliser la méthode
readLine() de la classe
BufferedReader.
Vous pourrez utilisez le fichier d'exemples
exempleURLExtractor.txt
pour tester votre programme.
© Université de Marne-la-Vallée