1.8 KiB
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.