6. Motivation and Background (Motivation et contexte)
6. Motivation and Background (Motivation et contexte)
Alors que les expressions régulières étaient à l'origine destinées à décrire un langage formel (Formal Language) pour prendre en charge une fonction de correspondance booléenne (Boolean Matching Function), elles ont été améliorées avec des fonctions d'analyse (Parsing Functions) qui prennent en charge l'extraction et le remplacement de portions arbitraires du texte correspondant. Avec cette accumulation de fonctionnalités, les bibliothèques d'expressions régulières d'analyse sont devenues plus sensibles aux bogues et aux dégradations de performances surprenantes qui peuvent être exploitées dans des attaques par déni de service (Denial-of-Service Attacks) par un attaquant qui contrôle l'expression régulière soumise au traitement. I-Regexp est conçu pour offrir une interopérabilité et être moins vulnérable à de telles attaques, avec le compromis que sa seule fonction est d'offrir une réponse booléenne quant à savoir si une séquence de caractères correspond à une expression régulière.
6.1 Implementing I-Regexp (Implémentation d'I-Regexp)
Les expressions régulières XSD sont relativement faciles à implémenter ou à mapper vers des dialectes d'expressions régulières d'analyse largement implémentés, avec ces exceptions notables:
-
Soustraction de classe de caractères (Character Class Subtraction). Il s'agit d'une fonctionnalité très utile dans de nombreuses spécifications, mais elle est malheureusement principalement absente des dialectes d'expressions régulières d'analyse. Par conséquent, elle est omise d'I-Regexp.
-
Échappements multi-caractères (Multi-Character Escapes).
\d,\w,\set leurs classes complémentaires en majuscules présentent une grande variabilité entre les variantes d'expressions régulières. Par conséquent, ils sont omis d'I-Regexp. -
Toutes les implémentations d'expressions régulières ne prennent pas en charge l'accès aux tables Unicode (Unicode Tables) qui permettent d'exécuter des constructions telles que
\p{Nd}, bien que la fonctionnalité\p/\Pen général soit maintenant assez largement disponible. Bien que, en principe, il soit possible de les traduire en correspondances de classes de caractères, cela nécessite également un accès à ces tables. Par conséquent, les bibliothèques d'expressions régulières dans des environnements sévèrement contraints peuvent ne pas être en mesure de prendre en charge la conformité I-Regexp.