Les expressions régulières

Les expressions régulières sont une écriture compacte pour un représenter un ensemble (peut-etre infini) de séquences de caractères semblables. Elle rappellent et étendent la notion de "Joker" ou "Wild-card" qu'on trouve dans MS-DOS (e.g. DIR *.EXE ), comme d'ailleurs dans les "shells" UNIX (sous le nom de "globbing"), ou encore Authorware.

Les expressions régulières se retrouvent dans une foule de langages et d'outils. Pour le détail veuillez consulter la documentation des expressions régulières

Elles diffèrent d'un environnement à l'autre par quelques détails, avec un noyau commun.

Résumé des conventions "universelles" pour les expressions régulières

Cette dizaine de symboles et de constructions ( le cas [xyz] compte double ) constituent un noyau commun à tous les modules d'expressions régulières.

Une complication, la syntaxe de citation

Comment écrire des expressions régulières qui reconnaissent les signes spéciaux ci-dessus dans une chaine de caractères ? Comme ils ont un sens spécial, ils ne peuvent se représenter eux-meme sans autre (ce qui est le sens normal des autres caractères). Afin de permettre de distinguer deux cas d'usage de ces caractères-là, on utilise un caractère d'échappement de code - mais sur ce point les environnements diffèrent entre eux.

Comment accéder aux expressions régulières

Remplacement avec des expressions régulières

En dehors des recherches, les expressions régulières sont beaucoup employées pour modifier du texte de manière systématique dans un fichier. On peut se référer à des expressions groupées (...)trouvées dans un input avec une syntaxe spéciale. (Voir ci-dessus)

Exemples

Les expressions régulières ont une puissance limitée

(un peu de philosophie ....)

Il y a une foule de modèles d'ordinateurs et de langages de programmation. Néanmoins, d'un point de vue théorique (c'est-à dire en ignorant les questions de performance et de limitation de mémoire) toutes ces machines (et langages) sont equivalentes, en ce sens qu'il est en principe possible de simuler chaque machine ou langage au moyen d'un programme (dit émulateur ou interpréteur) tournant sur une autre machine/langage. Ce fait est bien illustré, d'ailleurs, par les divers émulateurs Windows tournant sur Sun ou Mac.

De manière générale, les langages de programmation appartiennent a cette classe, dite de "la machine universelle". Les expressions régulières sont le cas d'exception d'un modèle de machine formelle moins puissant que la machine universelle mais néanmoins très utile et employé. Mais le plus souvent comme un "sous-langage", compartiment d'un langage plus puissant.

Un exemple de tache simple mais hors de portée du langage des expressions régulières : vérifier que les paires de parenthèses correspondent.

(.*) va admettre 1) "(x)" et 2) "(x))

([^)]*) élimine 2) mais admet 3) "((x)"

([^()]*) reconnait correctement une paire de parenthèse mais n'autorise pas 4: "((x))"

En fait il est possible d'écrire des expressions régulières qui vont reconnaitre les chaines de caractères ayant un nombre maximum prédéterminé de parenthèses imbriquées. Ecrivez-en une qui reconnait deux niveaux de parenthèses.


Goto: STAF-14
Ecrit par Boris Borcic, modifé par D.K.S.