Regular Expressions Cookbook, 2e édition par Jan Goyvaerts, Steven Levithan

Limiter l’entrée aux caractères alphanumériques dans n’importe quelle langue

Cette expression régulière limite l’entrée aux lettres et aux chiffres de n’importe quelle langue ou script :

^+$

Options de l’expression régulière : None

Saveurs de Regex : .NET, Java, XRegExp, PCRE, Perl, Ruby 1.9

Ceci utilise une classe de caractères qui inclut des raccourcis pour tous les points de code dans les catégories Lettre, Marque et Nombre décimal d’Unicode, ce qui suit la définition officielle d’Unicode d’un caractère alphanumérique. La catégorie Marque est incluse car les marques sont nécessaires pour les mots de nombreuses langues. Les marques sont des points de code destinés à être combinés avec d’autres caractères (par exemple, pour former une version accentuée d’une lettre de base).

Malheureusement, les catégories Unicode ne sont pas prises en charge par toutes les saveurs d’expressions régulières couvertes par ce livre. Plus précisément, cette regex ne fonctionnera pas avec JavaScript (à moins d’utiliser XRegExp), Python ou la saveur native de Ruby 1.8. L’utilisation de cette regex avec PCRE nécessite que PCRE soit compilé avec le support UTF-8, et les catégories Unicode peuvent être utilisées avec les fonctions preg de PHP (qui reposent sur PCRE) si l’option /u est ajoutée à la regex.

La regex suivante montre une solution de contournement pour Python:

^+$

Options de la regex : Unicode

Saveurs de regex : Python

Ici, nous contournons le manque de catégories Unicode dans Python en utilisant le drapeau UNICODE ou U lors de la création de l’expression régulière. Cela change la signification de certains tokens regex en leur faisant utiliser la table de caractères Unicode. ‘\w‘ nous permet alors de trouver la plupart du temps une solution puisqu’il correspond aux caractères alphanumériques et au trait de soulignement. En utilisant son inverse ‘\W‘ dans une classe de caractères négatifs, nous pouvons supprimer le trait de soulignement de cet ensemble. Les doubles négations comme celle-ci sont parfois très utiles dans les expressions régulières, bien qu’elles puissent être difficiles à comprendre. Python 3.x inclut par défaut les caractères non ASCII dans les raccourcis comme ‘\w‘, et ne nécessite donc pas le drapeau UNICODE.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.