RegEx


Les abréviations regex et regexp (de l'anglais regular expression) désignent des expressions régulières employées en informatique théorique, en programmation, en développement de logiciels, en traitement de texte et en SEO. Les expressions régulières permettent de décrire les chaînes de caractères (en anglais strings) et des quantités de chaînes de caractères sous une forme générale et logique, afin de les rechercher, remplacer, manipuler ou traiter dans des documents, codes sources ou bases de données.

Par exemple : dans un éditeur de textes avec l'option regex, tous les liens d'un fichier HTML doivent s'afficher. Si l'expression <a href="[^"]*"[^>]*> est insérée dans la fonction de recherche de l'éditeur, tous les liens possédant le format usuel pour les liens HTML seront représentés. Même l'expression <a href=".*?".*?> exécute cette tâche.

Informations générales

Le logicien et mathématicien Stephen Kleene est considéré comme le créateur des regex. En 1956, il utilisait déjà une notation des quantités régulières dans un essai sur la représentation des événements dans les réseaux neuronaux et les automates finis. Aujourd'hui, ils constituent, avec d'autres travaux, les ouvrages de base en informatique théorique. À présent, les expressions régulières s'appliquent dans différents domaines et simplifient des étapes de travail qui seraient très coûteuses et nécessiteraient beaucoup de temps. Les regex peuvent être utilisées en fonction de leur implémentation dans plusieurs langages de programmation, environnements et éditeurs de texte. C’est le cas dans Perl, PHP, .NET ou JavaScript comme éléments de chaque bibliothèque et dans EditPad, Emacs et Notepad++ comme fonction de recherche et de remplacement dans les éditeurs de texte. On peut aussi effectuer les expressions régulières dans Google Analytics , par exemple pour filtrer les sources de trafic, définir les segments et séparer les données de rapports d'autres données.

Fonctionnement

Les applications de regex sont extrêmement diversifiées. Les éventuelles expressions régulières dépendent de la notation. C'est ainsi qu'on retrouve diverses orthographes dans différents langages de programmation. Ces notations sont désignées par exemple comme motif de nom, BRE (Basic Regular Expressions) et ERE (Extended Regular Expressions). Parfois, les différences sont dues au fait que les caractères individuels, et surtout les métacaractères (caractères de commande) sont déjà occupés dans un langage de programmation.

En principe, on distingue des caractères (terminaux) et des métacaractères. Les caractères se trouvent dans le jeu de caractères, une sorte d'alphabet qui contient par ex. des nombres, des virgules et des lettres. Les métacaractères sont définis par des opérations comme l'alternance |, l'enchaînement () et [] ainsi que la répétition avec *, + et ?. Avec ^, on peut nier des quantités. D’une certaine façon, les métacaractères sont des instructions pour le logiciel de traitement. Les caractères normaux peuvent se placer devant ou derrière les métacaractères – l'importance formelle diffère alors pour chacun d'eux. La plupart des implémentations fonctionnent avec un moteur regex spécial qui parse et interprète les expressions régulières notées, puis vérifie la présence d'une ressource sur leurs instances.

  • Caractères normaux : tous les chiffres de 0 à 9. Toutes les lettres d'un alphabet ainsi que les caractères spéciaux (virgules, tirets, point-virgule). Important : l'alphabet dépend du jeu de caractères utilisé (par exemple Unicode ou ASCI).
  • Classe de caractères : \d représente, par exemple, un chiffre compris entre 1 et 9. Tandis que \t trouverait tous les tabulateurs. Comme autres possibilités, il y a \l pour les minuscules, \s pour tous les espacements ou \u pour toutes les majuscules.
  • Métacaractères :
[ ] ( ) { } | ? + - * ^ $ \ .

À l'aide d'une barre oblique inversée préinstallée, on peut supprimer un métacaractère.

Usage pratique

Avec des expressions régulières, il est possible d'effectuer entre autres les procédés suivants :

  • Filtrage par motif : à l'aide d'un algorithme de recherche de sous-chaîne, on peut vérifier l'apparition des motifs dans les textes. Une expression régulière représente une quantité de chaînes de caractères dont les apparitions s'équilibrent dans le texte. L'expression regex spécifie le motif, le moteur vérifie le motif contre une ressource (par exemple un document HTML ou un texte). Le cas échéant, une règle de remplacement peut être indiquée pour changer directement les chaînes de caractères trouvées. On peut aussi utiliser des quantificateurs pour restreindre les résultats. Exemples : la vérification d'une adresse e-mail insérée quant à son exactitude formelle ou la recherche des domaines de haut niveau dans une liste d'URL.
  • Globbing : dans ce mécanisme, les noms de fichier sont complétés avec des jokers pour sélectionner tous les fichiers dans un certain format, par exemple. Le joker "grec.*" chercherait dans un système de gestion de fichiers tous les fichiers commençant par "grec", mais présentant de différents formats comme .txt. ou .doc – l'astérisque représente la variété de formats de fichier. En outre, on utilise le globbing dans des attaques par déni de service lorsque des serveurs sont délibérément surchargés.
  • Troncature : lors de recherches dans des bases de données, les termes de recherche sont souvent raccourcis ou tronqués à l'aide des jokers. Le terme de recherche grec* afficherait tous les termes commençant par grec et se terminant par d'autres lettres. Par exemple grecque, gréco-latin ou gréco-romain. La troncature agrandit l'espace de recherche. Exemple : dans une recherche bibliographique, toutes les entrées contenant un terme déterminé seront trouvés.
  • Racinisation : dans la racinisation, des différentes variantes morphologiques d'un mot sont attribuées à la racine de ce dernier. On peut ainsi réduire les flexions et conjugaisons de mots à leur base linguistique qui est la racine du mot. Cette méthode est utilisée dans la recherche d'informations (par exemple par les moteurs de recherche) et en informatique théorique. Exemple : Google emploie probablement une méthode similaire pour la recherche organique.

Importance pour le SEO

Dans certains tâches SEO, les regex peuvent s'avérer extrêmement utiles. Les outils de suivi et d'analyse tels que Google Analytics disposent d'une implémentation des regex.

Chez Google Analytics, les expressions régulières servent par exemple à placer des filtres pour des adresses IP. Dans les paramètres de profil, on peut définir un filtre individuel en excluant les adresses IP d'un ou de plusieurs visiteurs. Ainsi, le trafic provenant d'un domaine d'adresses IP ne sera pas inclus dans les rapports. Cela est utile si vous voulez retirer les visites non pertinentes des statistiques de visite – par exemple celles de vos collaborateurs ou collègues de travail.

Différents segments peuvent également être traités dans Google Analytics à l'aide des regex. Par exemple, des recherches contenant des noms de marques peuvent être exclues. À cet effet, on définirait un segment qui n'inclut que du trafic organique et ne convient pas au nom de marque ayant été défini au préalable par regex : "[Gg]réco-romain" pour des orthographes avec des majuscules et des minuscules. Différents types de mots-clés peuvent également être exclus pour connaître la quantité de trafic généré sur deux ou trois mots-clés spécifiques. Cela vaut également pour du trafic venant d'autres sources comme les newsletters, e-mails et affiliations de liens de sites externes.

Une tactique similaire peut être utile dans le suivi des canaux de médias sociaux : ici, on définirait alors une source en fixant des sources possibles avec l'expression régulière. Par exemple "facebook|twitter|youtube|linkedin". Il n'y a pas que Google Analytics qui fournit une multitude de possibilités pouvant être exploitées avec des expressions régulières. Des protocoles web et des environnements serveur peuvent aussi interpréter et traiter des regex. C'est ainsi que des sites Web peuvent être redirigés et étiquetés comme URL canonique en décrivant certains motifs par regex.

Liens web