Vous êtes sur la page 1sur 17

Expressions Régulières

Automate → expression régulière


Expression Régulière → Automate
Conclusion

Expressions régulières

Philippe Quéinnec

3 janvier 2011

1 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Plan

1 Expressions Régulières

2 Automate → expression régulière

3 Expression Régulière → Automate

4 Conclusion

3 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Exemple d'utilisation
> ls monrepertoire/
memoire.aux memoire.tex picture004.jpg rapsody.jpg
memoire.dvi picture001.jpg presentation.tex raw.jpg
memoire.old picture002.jpg price-list.txt
memoire.log picture003.jpg taches.txt
Acher uniquement les images :
ls *.jpg
Eacer les chiers relatifs à memoire :
rm mem*
Eacer les images commençant par pic, de 1 à 3 :
rm pic*[1-3].jpg
4 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Expressions Régulières

Expressions régulières
Soit X un alphabet ni, et Y = {(, ), ∗, +, •, Λ, ∅} un alphabet
disjoint. Un mot m de (X ∪ Y ) est une expression régulière sur X
ssi :
soit m est ∅ ou Λ ou un symbole de X ,
soit m est de la forme (x + y ) ou (x • y ) ou x ∗ , où x et y sont
des expressions régulières sur X .

5 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Langage associé

Une expression régulière m sur X dénit un langage L(m) sur X


d'après les règles suivantes :
L(∅) est le langage vide ;
L(Λ) = {Λ} ;
Si a ∈ X , alors L(a) = {a} ;
Pour tout expression régulière u et v sur X ,
L(u + v ) = L(u ) ∪ L(v )
L(u • v ) = L(u )L(v )
L(u ∗ ) = L(u )∗

6 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Règles de calcul

Λ•e = e•Λ = e =e∗ e∗ + Λ Λ∗ = Λ


∅•e = e•∅ = ∅ e+∅ = ∅+e = e ∅∗ = Λ

(e1 + e2 ) + e3 = e1 + (e2 + e3 ) e+e = e


(e1 + e2 )e3 = e1 e3 + e2 e3 e∗ • e∗ = e∗
e1 (e2 + e3 ) = e1 e2 + e1 e3 (e ∗ )∗ = e∗
(e1 • e2 ) • e3 = e1 • (e2 • e3 ) ee ∗ = e ∗e
e∗ = Λ + ee ∗ ee ∗ = e ∗ ssi Λ ∈ e
e = e ∗ ssi e = e 2
(e1∗ e2 )∗ e1∗ = (e1 + e2 )∗ = e1∗ (e2 e1∗ )∗
(e1∗ + e2∗ )∗ = (e1 + e2 )∗ = (e1∗ e2∗ )∗

7 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Plan

1 Expressions Régulières

2 Automate → expression régulière

3 Expression Régulière → Automate

4 Conclusion

8 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Théorème d'Arden

Théorème d'Arden
Soient e1 et e2 deux expressions régulières. L'équation en
x : x = e1 x + e2 admet e1∗ e2 pour solution. Si Λ ∈/ e1 , cette solution
est unique.

Tout système de n équations à n inconnues du type


xi = ei ,1 x1 + · · · + ei ,n xn + ei ,n+1 avec Λ ∈/ ei ,j ∀i , j ≤ n, admet une
solution unique.

9 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Expression régulière correspondante à un automate


Soit A = (Q , X , δ, q0 , F ) un automate ni déterministe, avec
Q = {q0 , . . . , qn }.
Pour tout état qi ∈ Q , soit ei l'expression régulière qui représente le
langage {m | δ̂(qi , m) ∈ F }.
ei contient Λ si qi ∈ F , et l'ensemble des mots de la forme aw ,
a ∈ X et w ∈ {v | δ̂(qia , v ) ∈ F }, où qia = δ(qi , a).
On a donc un système :

ei aeia + {Λ si qi ∈ F}
X
=
a ∈X
La solution e0 = {m ∈ X ∗ | δ̂(q0 , m) ∈ F } est L(A).
Rq : la méthode fonctionne avec un automate non-déterministe
et/ou non complet.
10 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Plan

1 Expressions Régulières

2 Automate → expression régulière

3 Expression Régulière → Automate

4 Conclusion

11 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Automate associé à une expression régulière - Méthode


morphologique

e=Λ / GFED
@ABC
89:;
?>=<
q0
e=a / GFED
@ABC
q0 a / GFED
@ABC
89:;
?>=<
q1
/ GFED
@ABC / GFED
@ABC + GFED
@ABC / GFED
@ABC
89:;
?>=<

e = e1 • e2 q01 / ... qf 1 q02 / ... qf 2
@ABC
GFED
q01 / ... / GFED
@ABC
89:;
?>=<
qf 1
ooo7
/ GFED
@ABC
oo
e = e1 + e2 q0 oOOO
@ABC
GFED / GFED
@ABC
89:;
?>=<
OO
 O'
q02 / ... qf 2
e = e1 ∗ / GFED
@ABC
89:;
?>=<
q0  / GFED
@ABC
q01 / ... / GFED
@ABC
89:;
?>=<
qf 1
h


12 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Automate associé  Méthode des dérivées

Soit e une expression régulière sur X et a un symbole de X . La


dérivée (à gauche) de e par rapport à a est Da (e ) = {m | am ∈ e }.
Λ si Λ ∈ e
Calcul des dérivées : soit ∆(e ) =
∅ si Λ 6∈ e
 Da (a) = Λ et Da (b) = Da (Λ) = Da (∅) = ∅

Da (e1 + e2 ) Da (e1 ) + Da (e2 )



=

On a alors :
 Da (e1 • e2 ) = Da (e1 ) • e2 + ∆(e1 ) • Da (e2 )
Da (e1∗ ) Da (e1 ) • e1∗

=

Extension aux mots :
DΛ (e ) e

=
Dyx (e ) = Dx (Dy (e )) ∀x ∈ X , y ∈ X ∗

13 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Automate associé

Soit e une expression régulière. Le nombre de ses dérivées


successives est ni, et ces dérivées sont liées par le système :

D y (e ) = aDya (e ) + ∆(Dy (e ))
X

a∈X
Soient e0 , e1 , . . . , en les diérentes dérivées de e avec
e0 = e = DΛ (e ). Soit A = ({q0 . . . qn }, X , δ, q0 , F ) où qi est
associé à ei , qi ∈ F si Λ ∈ ei et δ(qi , a) = qj si ej = Da (ei ).
Alors A reconnaît le langage e0 .
L'automate A est déterministe et minimal.

14 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Plan

1 Expressions Régulières

2 Automate → expression régulière

3 Expression Régulière → Automate

4 Conclusion

15 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Syntaxe  shell 

shell sens syntaxe théorique


* un nombre quelconque de caractères X∗
? un caractère quelconque X
[123] un caractère parmi . . . {1, 2, 3} ou 1 + 2 + 3
[1-5] un caractère parmi intervalle {1, 2, 3, 4, 5} ou . . .
[1-5] complémentaire X \ {1, 2, 3, 4, 5}

Exemple : ls sound0[5-7]*.mp?

16 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Syntaxe classique
(éditeurs vi/emacs, Perl/PHP, générateur d'analyseur lexical. . . )
sens syntaxe théorique
. un caractère (quasi) quelconque X
[123] un caractère parmi . . . {1, 2, 3} ou 1 + 2 + 3
[1-5] un caractère parmi intervalle {1, 2, 3, 4, 5} ou . . .
[1-5] complémentaire X \ {1, 2, 3, 4, 5}
e* répétition e∗
e+ répétition au moins une fois ee ∗
e? 0 ou 1 fois e+Λ
e{n} n fois en
e{n,m} de n à m fois e n + e n+1 + . . . e m
e1 |e2 alternative e1 + e2
() groupement p.e. (a|b)*
17 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion

Conclusion

Il y a équivalence entre :
les langages rationnels (Rat) ;
les langages reconnus par les AFN ;
les langages reconnus par les AFD ;
les langages dénis par les expressions régulières.

18 / 18

Vous aimerez peut-être aussi