Les expressions régulières permettent d'effectuer toute sorte de traitement et de comparaisons complexes sur des chaînes de caractères. Ainsi, en utilisant les symboles particuliers de façon approprié, les expressions régulières permettront de rechercher ou d'effectuer des remplacements dans une chaîne de caractères.
Les caractères spécifiques dans les expressions régulières
Symbole | Description |
---|---|
\a | Ce symbole indique un caractère de signal sonore (BELL) |
\0NN | Ces symboles indiquent des caractères à l'aide de leur code octal. |
\cX | Ces symboles indiquent des caractères de contrôle. |
\f | Ce symbole indique un caractère de saut de formulaire (ou saut de page) |
\n | Ce symbole indique un caractère de nouvelle ligne, neutre vis-à-vis les systèmes d'exploitation |
\r | Ce symbole indique un caractère de retour de chariot |
\t | Ce symbole indique un caractère de tabulation |
\xNN | Ces symboles indiquent des caractères à l'aide de leur code hexadécimal. |
Les métacaractères dans les expressions régulières
Les 12 caractères suivants ont besoin d'un caractère d'échappement avec une barre oblique inversé (\), parce que, par défaut, ils ont des significations spécial :
\ | ( ) [ { ^ $ * + ? .
Symbole | Description |
---|---|
. | Ce symbole permet d'indiquer une correspondance avec un des caractères, à l'exception de «\n». |
| | Ce symbole permet d'indiquer une altération |
( ) | Ces symboles permettent d'indiquer un groupe et une capture |
[ ] | Ces symboles permettent d'indiquer une classe de caractères |
\ | Ce symbole permet d'indiquer de modifier le prochain caractère |
Les ancres dans les expressions régulières
Symboles | Description |
---|---|
^ | Ce symbole permet d'indiquer le commencement d'une correspondance de chaine de caractères ou d'une ligne. |
$ | Ce symbole permet d'indiquer la fin d'une correspondance de chaine de caractères ou de ligne. |
\b | Ce symbole permet d'indiquer une correspondance d'une limite de «mot» |
\B | Ce symbole permet d'indiquer une correspondance d'une limite sans «mot» |
Les quantifieurs dans les expressions régulières
Les quantifieurs dans les expressions régulières sont appliqués avant un «atome».
Symbole | Description |
---|---|
* | Ce symbole permet d'indiquer une correspondance de 0 ou plusieurs fois |
+ | Ce symbole permet d'indiquer une correspondance de 1 ou plusieurs fois |
? | Ce symbole permet d'indiquer une correspondance de 0 ou 1 fois. |
{N} | Ce symbole permet d'indiquer une correspondance exacte au nombre de fois «N» |
{N,} | Ce symbole permet d'indiquer une correspondance d'un minimum de «N» nombre de fois. |
{N,M} | Ce symbole permet d'indiquer une correspondance dans l'intervalle de fois «N» et «M» nombre de fois. |
Les caractères de classe de métacaractères dans les expressions régulières
Symbole | Description |
---|---|
^ | Ce symbole permet d'indiquer le premier caractère d'une classe effectue une négation de cette classe. |
_ | Ce symbole permet d'indiquer un moins le premier ou le dernier caractère de la classe, utilisé pour les rangs. |
Les caractères de raccourci de classe dans les expressions régulières
Symbole | Équivalence | Description |
---|---|---|
\d | [0-9] | Ce symbole permet d'indiquer un chiffre. |
\D | [^0-9] | Ce symbole permet d'indiquer que se n'est pas un chiffre. |
\s | [ \t\n\r\f] | Ce symbole permet d'indiquer un espace |
\S | [^ \t\n\r\f] | Ce symbole permet d'indiquer que se n'est pas un espace |
\w | [a-zA-Z0-9_] | Ce symbole permet d'indiquer un caractère de «mot». |
\W | [^a-zA-Z0-9_] | Ce symbole permet d'indiquer que se n'est pas un caractère de «mot». |
Les métaguillemets et les cas de transformations dans les expressions régulières
Symbole | Description |
---|---|
\E | Ce symbole permet d'indiquer la fin de la modification. |
\L | Ce symbole permet d'indiquer des caractères minuscules jusqu'à «\E». |
\Q | Ce symbole permet d'indiquer des caractères de guillemet de méta jusqu'à «\E». |
\U | Ce symbole permet d'indiquer des caractères majuscules jusqu'à «\E». |
Les variables spéciales dans les expressions régulières
Symbole | Description |
---|---|
$` | Ce symbole permet d'indiquer les caractères correspondant à la gauche. |
$& | Ce symbole permet d'indiquer les caractères correspondant. |
$’ | Ce symbole permet d'indiquer les caractères correspondant à la droite. |
\N | Ce symbole permet d'effectuer la capture de Nième ensemble de parenthèses si dans une correspondance de côté. |
$N | Ce symbole permet d'effectuer la capture de Nième ensemble de parenthèses si ce n'est pas dans une correspondance de côté. |
Les attributs (modificateurs) dans les expressions régulières
Symbole | Description |
---|---|
/e | Ce symbole permet d'indiquer qu'il faut évaluer le côté gauche de l'expression |
/g | Ce symbole permet d'indiquer qu'il faut effectuer une recherche dans toutes les sous-chaines de caractères |
/i | Ce symbole permet d'indiquer qu'il n'y a aucune distinction entre les majuscules et minuscules |
/m | Ce symbole permet d'indiquer qu'il faut effectuer le traitement de chaine de caractères sur de multiples lignes |
/s | Ce symbole permet d'indiquer qu'il faut effectuer le traitement de chaine de caractères sur une seule ligne |
/x | Ce symbole permet d'indiquer qu'il faut effectuer le traitement étendu des expressions régulières |
Les opérations d'expressions régulières
Symbole | Description |
---|---|
=~ | Ce symbole permet d'effectuer l'application d'une expression régulière (regex). |
!~ | Ce symbole permet d'effectuer la négation de l'application d'une expression régulière (regex). |
Exemples
Voici un exemple montrant comment remplacer le «M.» par «Monsieur» :
on obtiendra le résultat suivant :
Bonjour Monsieur Maltais, comment allez-vous ?Voici un exemple montrant comment remplacer les apostrophes (simple quote) par des guillemets (double quote) dans les balises «IMG SRC» du HTML :
on obtiendra le résultat suivant :
<img src="1.jpg"><img src="2.jpg" /><img src="3.jpg"><img src="4.jpg" border="1"><img src="4.jpg"><img border="1" src="6.jpg" >Voici un exemple montrant comment remplacer les apostrophes (simple quote) par des guillemets (double quote) dans les balises «IMG SRC» du HTML sans tenir compte des majuscules ou des minuscules (la lettre «i» pour les attributs) :
- #!/usr/bin/perl
-
- my $Source;
-
- $Source = "<img src=\"1.jpg\"><img src = '2.jpg' /><IMG src='3.jpg'><img src='4.jpg' border=\"1\"><img src='4.jpg'><img border=\"1\" src='6.jpg' ><img SRC='7.gif' style=\"border:1px;\">";
- $Source =~ s/<img([^>]*)src\s*=\s*["'']([^"'']+)["'']([^>]*)>/<img$1src="$2"$3>/gi;
-
- print $Source;
on obtiendra le résultat suivant :
<img src="1.jpg"><img src="2.jpg" /><img src="3.jpg"><img src="4.jpg" border="1"><img src="4.jpg"><img border="1" src="6.jpg" ><img src="7.gif" style="border:1px;">L'exemple suivant permet d'enlever les caractères n'étant pas ASCII :
on obtiendra le résultat suivant :
AVANT: ABCDEFl56APRES: ABCDEFl56
Remarques
- Concrètement, les expressions régulières peuvent s'avérer d'une puissance démesuré pour le contrôle d'un réseau et empêcher que des employées ou des fonctionnaires perdent leurs temps sur des sites Internet non désirés. Ainsi, si par exemple l'administrateur réseau utilisant le logiciel Provixy et qu'il modifie le fichier «user.action» en ajoutant dans les filtres un site comme «gladir.com» de la façon suivante :
- Les expressions régulières (regex) ne s'appliquent pas uniquement au langage de programmation Perl, ainsi, de nos jours, on le retrouve par exemple dans les fichiers «.htaccess», en langage de programmation PHP avec les fonctions ereg, eregi, preg_match, preg_replace et preg_split ou le PCRE, en langage de programmation Python avec le module «re», en langage de programmation JavaScript avec la classe «RegExp», en langage de programmation SQL de MySQL avec l'opérateur REGEXP, dans la commande grep du système d'exploitation Linux.
- Si vous souhaitez tester rapidement et efficacement les commandes d'expressions régulières (regex), vous devriez envisager d'utiliser des sites Web comme https://regex101.com/.
{ -filter{blockgladir} } .gladir.com |
Et qu'il rajoute dans le fichier «user.filter», les instructions suivantes :
FILTER: blockgladir Blocker le défilement sur la page daccueil de gladir.com s/<iframe[^>]*newsdata[^>]*<.*<\/iframe>/enfin plus de nouvelles/isg |
on constatera la disparition des nouvelles sur le site de «gladir.com» uniquement sans affecter le reste du site Internet. On pourrait pousser plus loin cette idées et carrément empêcher l'apparition des publicités en ligne des sites comme Google par exemple (l'utilisation de JanusVM en est un bon exemple). A la limite, on pourrait même empêcher l'affichage de résultat de moteur de recherche pour certains pays. Le seul obstacle étant bien sûre l'imagination des développeurs.
Voir également
Langage de programmation - PHP - Référence de procédures et fonctions - preg_replace