:: Enseignements :: ESIPE :: E4INFO :: 2007-2008 :: Compilation ::
[LOGO]

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.