# Exercices REGEXP REGEXP. abb britannique de Regular Expression. ## Exo 1 L'alphabet de travail est a,b Pour chaque description en français, proposez une expression régulière. * tous les mots sur l'alphabet qui sont de longueur 2. (a+b).(a+b) On peut faire le calcul. (a+b).(a+b) = a.(a+b)+b.(a+b) avec a.(a+b) = a.a + a.b et b.(a+b) = b.a + b.b Donc (a+b).(a+b) = a.a + a.b + b.a + b.b En général on n'écrit pas les . qui sont implicites : (a+b).(a+b)= aa+ab+ba+bb * tous les mots qui sont de longueur 1. a+b * N'importe quel mot (a+b)* = epsilon + (a+b) + (a+b)(a+b) + (a+b)(a+b)(a+b) + ... * attention a+b* ça signifie le langage qui contient a+ epsilon + b + bb + bbb + bbbb etc * tous les mots qui commencent par un a. a.(a+b)* * tous les mots qui terminent par un b. (a+b)*.b * tous les mots qui commencent par un a et terminent par un b. a.(a+b)*.b * les mots qui commencent et terminent par la même lettre. (idée c'est soit je commence et termine par a, soit je commence et termine par b). a.(a+b)*.a + b.(a+b)*.b selon l'interprétation du français de la consigne, on peut considérer que le mot a commence et termine par a. donc il devrait être accepté. Avec interprétation, on va écrire directement a + b + a.(a+b)*.a + b.(a+b)*.b * les mots qui contiennent deux a consécutifs. informellement : ... aa ... en regexp (a+b)*.a.a.(a+b)* * les mots qui contiennent consécutivement bab (a+b)*.b.a.b.(a+b)* * les mots de longueur paire On peut regrouper les lettres par paquet de 2. epsilon + ((a+b).(a+b))* * les mots avec un nombre pair de a cette question sur l'alphabet {a} epsilon + (a.a)* maintenant sur l'alphabet {a,b}, je dois autoriser des b un peu partout. epsilon + (b*.a.b*.a.b*)* ## Exo 2 On souhaite fabriquer un automate à partir d'une expression régulière. Exemple de a.(a+b)* Suite au tableau.