Les expressions régulières

Introduction

Il est connu que nous pouvons faire des recherches de chaînes de caractères dans un texte.  On le fait depuis les débuts de l'informatique moderne.  Toutefois il arrive que nous devions rechercher non pas une simple chaîne mais un patron.  Par exemple, quelque chose qui ressemble à:

 

Constitution d'une expression régulière

Pour fabriquer une expression régulière nous utiliserons des «méta caractères» ayant des significations spéciales.

Code Signification
\ Le caractère qui suit doit être interprété comme un caractère spécial ou comme le caractère lui-même.  On l'utilisera pour les caractères suivant: ?, /, \, [, ], {, }, (, ), +, *, |
^ Début de la chaîne de caractère.
$ Fin de la chaîne de caractère.
* Ce qui précède peut être répété de 0 à N fois.
+ Ce qui précède peut être répété de 1 à N fois.
? Ce qui précède peut être répété 0 ou 1 fois.
. Le point représente n'importe quel caractère sauf une fin de ligne.
(X) On doit mémoriser ce qu'il y a entre les parenthèses.
X|Y Soit la séquence X soit Y.
{N} Ce qui précède répété exactement N fois.
{N.} Ce qui précède répété au moins N fois.
{N.M} Ce qui précède répété au moins N fois et au plus M fois.
[XYZ] N'importe quel caractère choisi parmi la liste fournie.
[^XYZ] N'importe quel caractère sauf ceux mentionnés.
[X-Z] N'importe quel caractère entre les caractères mentionnés.
\b Une frontière de mot
\B Ailleurs qu'à une frontière de mot.
\cX Caractère de contrôle X.
\d Un chiffre quelconque [0-9].
\D Tout sauf un chiffre [^0-9].
\f Un saut de page.
\n Une fin de ligne.
\r Un retour de chariot.
\s Un caractère d'espacement [  \f\n\r\t\v]
\S Tout sauf un caractère d'espacement [^  \f\n\r\t\v]
\t Une tabulation horizontale.
\v Une tabulation verticale.
\w Un caractère alphanumérique, un blanc ou un souligné. [A-Za-z0-9 _]
\W Tout sauf un caractère alphanumérique [^A-Za-z0-9 _]
\N Référence arrière à la dernière expression entre parenthèses
\oXX Une valeur représentée en octal.
\hXX Une valeur représentée en hexadécimal.

Construction d'une expression régulière

Il y a deux façons de créer une expression régulière:

Voici quelques exemples d'expressions régulières.

\d{3}-\d{4} Un numéro de téléphone simple (en Amérique du nord ;-)
[A-Z]{4}\d{8} Un code permanent
[A-Z][0-9][A-Z] [0-9][A-Z][0-9] Un code postal canadien
[A-Fa-f0-9]+ Un nombre hexadécimal

Les méthodes

expReg.compile(profil, modificateurs);

Cette méthode permet de compiler une expression régulière qui sera utilisée plusieurs fois dans un script.  Les modificateurs sont:

resultat = expReg.exec(texte);

resultat = expReg(texte);

Cette méthode effectue la recherche d'une expression régulière dans un texte.  En cas d'échec elle retourne la valeur null.  Sinon elle retourne un tableau des chaînes entre parenthèses trouvées.

resultat = texte.match(expReg);

Cette méthode retourne la liste (tableau) des occurrences trouvées ou null.

resultat = texte.replace(expReg, chaîne);

Cette méthode recherche une expression régulière et la remplace par une chaîne donnée.

resultat = texte.search(expReg);

Cette méthode recherche une expression régulière dans un texte.  Elle retourne l'index du premier groupe trouvé ou -1 en cas d'échec.

resultat = texte.split(expReg [, limite]);

Cette méthode découpe un texte selon une expression régulière et retourne un tableau contenant les sous-chaînes.  On peut donner une limite à la longueur du tableau.

resultat = expReg.test(texte);

Cette méthode recherche l'expression régulière fournie dans un texte.  Elle retourne true ou false.

Les propriétés

$1, $2, ... $9

Les 9 premières sous-chaînes entre parenthèses..

constructor

Le constructeur de l'objet RegExp.

global

Présence du modificateur g.

ignoreCase

Présence du modificateur i.

input (ou $_)

Le texte sur lequel porte l'expression régulière.

lastIndex

Point de départ de la recherche ou des recherches subséquentes.

RegExp.lastMatch (ou $&)

Derniers caractères ayant donné lieu à une correspondance.

RegExp.lastParen (ou $+)

La dernière sous-chaîne entre parenthèses.

RegExp.leftContext (ou $`)

La chaîne de caractères précédant la plus récente correspondance.

multiline (ou $*)

true ou false selon que la recherche s'effectue sur plusieurs lignes ou sur une seule.

prototype

Prototype de la classe RegExp.

RegExp.rightContext (ou $')

La chaîne de caractères quit suit la plus récente correspondance.

source

Valeur de l'expression régulière.

 

Lectures suggérées