Les expressions rationnelles, parfois appelées expressions régulières (ou encore regex ou regexp de l’anglais regular expressions) est un langage informatique développé dans les années 1940 et 50 destiné à manipuler les chaînes de caractères. Très compactes et très puissantes, elles permettent de décrire des chaînes de caractères très complexes en une quantité réduite de caractères.
Exemples d’utilisation
La définition des expressions rationnelles n’est pas intuitive et leur usage est essentiellement cantonné aux outils destinés aux informaticiens, qu’il s’agisse d’éditeurs de textes ou d’outils de manipulation de chaînes de caractères en ligne de commande fréquemment utilisés sous UNIX. En matière de développement web, l’usage des expressions rationnelles permet notamment de vérifier la validité des données entrées par les utilisateurs, ou encore de filtrer le spam.
L’identification des adresses email correctement formulés, peut être réalisé sous cette forme compacte relativement permissive, mais aussi assez lisible :
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|gov|biz|info|name|aero|biz|info|jobs|museum)$
ou bien encore sous cette forme plus exhaustive et plus stricte, mais aussi très peu lisible :
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Cette autre expression rationnelle permet d’identifier plusieurs centaines de milliers de façons d’écrire le mot « Viagra » :
\b((V|v|\\/)+([\W]*[\w]{0,2}[\W]*)(I|i|1|l|\||ï|ì|:|Ì|Î|Í|Ï|y|Y)*([\W]*[\w]{0,2}[\W]*){0,2}(A|a|@|/\\|á|à|â|ã|ä|å|æ|À|Á|Â|Ã|Ä|Å)+([\W]*[\w]{0,3}[\W]*)(G|g|6|9){1,4}([\W]*[\w]{0,3}[\W]*)(R|r|®){0,4}([\W]*[\w]{0,2}[\W]*)(A|a|@|/\\|á|à|â|ã|ä|å|æ|À|Á|Â|Ã|Ä|Å)+)\b
Documentation
Une excellente source de documentation est le site Regular-Expressions.info. Très didactique et orienté vers la pratique, ce site propose divers exemples d’expressions rationnelles communément utilisées dans les applications web, notamment.
Une autre source utile d’informations en matière d’expressions rationnelles est le site RegExLib.com qui regorge d’exemples d’expressions rationnelles classés, commentés et notés par les utilisateurs du service, en plus d’un testeur en ligne permettant de tester des expressions rationnelles avec les moteurs .Net (côté serveur), JavaScript (côté client) et VBScript (côté client).
Un excellent outil en ligne pour tester les expressions rationnelles est le site REGex TESTER permettant de tester ses expressions rationnelles en JavaScript (côté client en cours de frappe), Preg (côté serveur) et Ereg (côté serveur).
Conclusion
Les expressions rationnelles ont beau être fort puissantes, elles n’en demeurent pas moins peu intuitives pour le commun des mortels. Néanmoins, pour les informaticiens trouvant le temps d’apprendre à les maîtriser, leur utilisation permet un gain de temps non négligeable dans le développement d’applications manipulant les chaînes de caractères en général et les applications web en particulier.
Crédit image : OpenClipart, license Domaine public
Bonsoir,
quelle expression rationnelle détecte les balises html ?
Une expression rationnelle qui détecte les balises HTML serait celle-ci :
Ceci si l’on suppose qu’une balise HTML est construite ainsi :
<
et fin par>
;/
qui indique une balise de fin ;Ainsi, cette expression rationnelle nous permet de capturer des balises HTML telles que :
<body>
<p class="paragraph">
</em>
Cette expression rationnelle ne vérifie cependant pas la validité des balises. Ainsi, la balise
< / blockquote class="oops" >
serait considérée, à tort ou à raison, comme valide.