Expressions régulières Philippe Quéinnec 3 janvier 2011 1 / 18
Plan 1 2 3 4 3 / 18
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 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
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
Règles de calcul Λ e = e Λ = e e = e + Λ Λ = Λ e = e = e + = + e = e = Λ (e 1 + e 2 ) + e 3 = e 1 + (e 2 + e 3 ) e + e = e (e 1 + e 2 )e 3 = e 1 e 3 + e 2 e 3 e e = e e 1 (e 2 + e 3 ) = e 1 e 2 + e 1 e 3 (e ) = e (e 1 e 2 ) e 3 = e 1 (e 2 e 3 ) ee = e e e = Λ + ee ee = e ssi Λ e e = e ssi e = e 2 (e 1 e 2) e 1 = (e 1 + e 2 ) = e 1 (e 2e 1 ) (e 1 + e 2 ) = (e 1 + e 2 ) = (e 1 e 2 ) 7 / 18
Plan 1 2 3 4 8 / 18
Théorème d'arden Théorème d'arden Soient e 1 et e 2 deux expressions régulières. L'équation en x : x = e 1 x + e 2 admet e 1 e 2 pour solution. Si Λ / e 1, cette solution est unique. Tout système de n équations à n inconnues du type x i = e i,1 x 1 + + e i,n x n + e i,n+1 avec Λ / e i,j i, j n, admet une solution unique. 9 / 18
Expression régulière correspondante à un automate Soit A = (Q, X, δ, q 0, F ) un automate ni déterministe, avec Q = {q 0,..., q n }. Pour tout état q i Q, soit e i l'expression régulière qui représente le langage {m ˆδ(q i, m) F }. e i contient Λ si q i F, et l'ensemble des mots de la forme aw, a X et w {v ˆδ(q ia, v) F }, où q ia = δ(q i, a). On a donc un système : e i = a X ae ia + {Λ si q i F } La solution e 0 = {m X ˆδ(q 0, m) F } est L(A). Rq : la méthode fonctionne avec un automate non-déterministe et/ou non complet. 10 / 18
Plan 1 2 3 4 11 / 18
Automate associé à une expression régulière - Méthode morphologique e = Λ e = a e = e 1 e 2 e = e 1 + e 2 e = e 1 q 0 q a 0 q 1 q 01... q f 1 q 01... q f 1 ɛ q 0 ɛ q 02... ɛ q 02... q f 2 ɛ q 0 q 01... ɛ q f 1 q f 2 12 / 18
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 D a (e) = {m am e}. { Λ si Λ e Calcul des dérivées : soit (e) = si Λ e D a (a) = Λ et D a (b) = D a (Λ) = D a ( ) = D a (e 1 + e 2 ) = D a (e 1 ) + D a (e 2 ) On a alors : D a (e 1 e 2 ) = D a (e 1 ) e 2 + (e 1 ) D a (e 2 ) D a (e 1 ) = D a(e 1 ) e 1 Extension { aux mots : DΛ (e) = e D yx (e) = D x (D y (e)) x X, y X 13 / 18
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) = ad ya (e) + (D y (e)) a X Soient e 0, e 1,..., e n les diérentes dérivées de e avec e 0 = e = D Λ (e). Soit A = ({q 0... q n }, X, δ, q 0, F ) où q i est associé à e i, q i F si Λ e i et δ(q i, a) = q j si e j = D a (e i ). Alors A reconnaît le langage e 0. L'automate A est déterministe et minimal. 14 / 18
Plan 1 2 3 4 15 / 18
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
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 e n e{n,m} de n à m fois e n + e n+1 +... e m e 1 e 2 alternative e 1 + e 2 () groupement p.e. (a b)* 17 / 18
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