• Aucun résultat trouvé

Automates TP1 – Expressions régulières

N/A
N/A
Protected

Academic year: 2022

Partager "Automates TP1 – Expressions régulières"

Copied!
2
0
0

Texte intégral

(1)

Licence Math/Info - L1

Automates

TP1 – Expressions régulières

Quelques bases sous Unix / Linux

:

Quelques conseils « en vrac » pour être à l'aise avec Unix / Linux :

familiarisez-vous le terminal (≃ console, ligne de commande, shell, bash, sh...),

• éditeurs de textes : « gedit », « kate », « emacs », « vi », « nano »,

• dans le terminal, utilisez :

◦ la touche tabulation pour « auto-compléter » une commande ou un nom de fchier, appuyez plusieurs fois dessus pour afcher les propositions d'auto-complétion,

◦ la sélection avec le curseur (ou en double click) pour copier, le bouton du milieu ou le raccourci shift+inser pour coller,

◦ l'aide sur les commandes, le manuel « man » (par ex. « man cd », « man rm »...),

◦ le raccourci ctrl+c ou ctrl+d pour arrêter un programme en cours d'exécution.

Les commandes couramment utilisées (au moins pour ce TP) :

cd : aller dans un dossier (absolu « /home/nouvel/test... » ou relatif « test/ »),

ls ou ll : afcher les fchiers du dossier courant,

• pwd : afcher le chemin du dossier courant,

• mkdir : créer un dossier,

• rm : efacer un fchier (ou un dossier : « rm -r »),

• cat : envoie le contenu d'un (des) fchier(s) vers le fux de sortie standard,

• less : visualiser un fux (fèches pour monter / descendre, « q » pour quitter),

grep : afcher les lignes du fux qui correspondent à une expression régulière,

sort : trie les lignes du fux par ordre lexicographique,

uniq : omet les lignes répétées dans le fux,

wc : compte le nombre de lignes / mots / caractères dans le fux.

Principe des fux de données :

Par exemple :

• Envoyer le contenu d'un fchier vers la sortie standard (terminal) : cat fchier.txt

• Envoyer le contenu d'un fchier vers la visualisation : cat fchier.txt | less

• Envoyer le contenu d'un fchier vers « grep », qui sélectionne les lignes contenant le mot « bonjour », puis le visualiser :

cat fchier.txt | grep syndicat | less

• Envoyer le contenu d'un fchier vers « grep », qui sélectionne les lignes contenant le mot « bonjour », puis l'enregistrer dans un autre fchier :

cat fchier.txt | grep syndicat > fchierbonjour.txt De manière générale :

• pour tester des commandes, exécutez les dans le terminal,

• lorsque la sortie est volumineuse, ajoutez « | less » pour visualiser,

• lorsque vous voulez enregistrer la sortie dans un fchier, ajoutez « > fchier.txt »,

• pour voir (ou compter) des entrées distinctes, ajoutez « | sort | uniq -c ».

programme Flux de

données Flux de

données pipe « | »

Chevron « > »

terminal

fichier

(2)

Quelques expressions régulières simples

:

Créez vous un répertoire de travail sur votre espace personnel. Récupérez sur l'ENT le fchier

« Corpus EstRepublicain 2003-02-14 » et enregistrez-le dans le dossier. Essayez les commandes « cat » et « less » avec ce fchier.

Utilisez ces deux commandes avec la commande « grep » pour chercher des expressions régulières. Essentiellement, utilisez grep de deux manières pour trouver une expression régulière :

grep -E "expression régulière" : afche la ligne contenant une (ou plusieurs) chaîne(s) de caractères qui correspondent à l'expression régulière,

grep -Eo "expression régulière" : n'afche que les chaînes de caractères qui correspondent à l'expression régulière.

Lorsque l'on programme des expressions régulières, les symboles suivants sont utilisées :

a* : fermeture (itéré, étoile de Kleene), répéter 0 à n fois un caractère,

a+ : fermeture stricte, répéter 1 à n fois un caractère,

a? : répéter 0 à 1 fois un caractère,

a|b : disjonction (équivalent du + dans les expressions régulières formelles),

(a) : parenthèses, pour isoler une expression, par ex. : ab* ≠ (ab)*.

Si l'on veut reconnaître un caractère spécial (*, +, ? (, ), ., ^, $, [, ]) il faut le précéder de « \ ».

Recherchez les expressions régulières suivantes :

• la chaîne «vers» (sans espace),

• la chaîne « vers » (avec espace),

• les chaînes « suis », « est » , « sont » ou « sera »,

• les chaînes contenant un ou plusieurs « r » encadrés de « e » ou de « a »,

• les chaînes contenant «eux» ou «aux».

Classes de caractères

:

Les expressions régulières peuvent faire appel à des classes de caractères (sous-alphabets), défnies comme suit :

. : n'importe quel caractère,

^ / $ : début / fn de ligne,

[ac] : caractère a ou caractère c,

[0-9] : n'importe quel caractère numérique ( = [:digit:]),

[a-z] : n'importe quel caractère alphabétique minuscule ( = [:lower:]),

[A-Z] : n'importe quel caractère alphabétique majuscule ( = [:upper:]),

[a-Z] : n'importe quel caractère alphabétique ( = [:alpha:]),

[a-9] : n'importe quel caractère alphabétique ou numérique ( = [:alnum:]),

[:space:] : marques d'espacement (espaces, tabulations).

Il est possible de prendre le complémentaire d'une classe en ajoutant « ^ » au début de la spécifcation de la classe, par ex. [^ac] reconnaît n'importe quel caractère sauf a et c, ou [^0-9] reconnaît n'importe quel caractère qui n'est pas numérique.

A l'aide des classes de caractères, cherchez les expressions régulière suivantes :

• n'importe quelle suite de chifres,

• une année,

• une heure, au format XXhYY,

• un mot au pluriel,

• les mots qui commencent par « vers»,

• les mots qui commencent une phrase,

• les noms de villes : qui se terminent par «ville » ou qui commencent pas « Saint-»,

• les paires de mots séparés par « de »,

• les expressions entre guillemets « expression ».

Références

Documents relatifs

les instructions sont exécutées pour chaque ligne où la valeur chaîne de l'expression contient une chaîne satisfaisant à l'expression régulière. expression !/expression

- Nous allons spécifier les tokens d’un langage de programmation en util- isant une notation formelle appelée le langage des expressions régulières. - Nous allons implémenter

De nombreux dégâts sur le paysage (failles) ou sur les habitations (ponts, routes, canalisations, ...) peuvent

Pour calculer algorithmiquement une expression rationnelle pour chacun d’eux, il suffit donc d’utiliser récursivement le procédé d’élimination basé sur le lemme

Ils génèrent en effet une sélection par et pour les conditions "de confort" (engrais/pesticides) de variétés fixées qui ne peuvent plus évoluer. Le paysan n'a plus le

cyrille@cyrille:~$ sed "s/pluie/soleil/g" essaised | grep -v "^$" | tee resultatsed soleil soleil neige

Notre offre de services haut de gamme comprenant la vente, la location et la gestion de vos biens immobiliers tout en vous garantissant un accompagnement personnalisé..

L'opération d'interprétation L associe à une expression rationnelle sur l'alphabet Σ un langage sur le même alphabet de manière récursive avec les règles suivantes...