Aller au contenu principal

5. Mapping I-Regexp to Regexp Dialects (Mappage d'I-Regexp vers les dialectes Regexp)

5. Mapping I-Regexp to Regexp Dialects (Mappage d'I-Regexp vers les dialectes Regexp)

Le matériel de cette section n'est pas normatif. Il est fourni comme guide aux développeurs qui souhaitent utiliser I-Regexp dans le contexte d'autres dialectes d'expressions régulières.

5.1 Multi-Character Escapes (Échappements multi-caractères)

I-Regexp ne prend pas en charge les échappements multi-caractères (Multi-Character Escapes, MCE) courants et les classes de caractères construites autour d'eux. Ceux-ci peuvent généralement être remplacés comme le montrent les exemples du tableau 1.

MCE/class:Replace with:
\S[^ \t\n\r]
[\S ][^\t\n\r]
\d[0-9]

Tableau 1: Exemples de substituts pour les échappements multi-caractères

Notez que la sémantique de \d dans les expressions régulières XSD est celle de \p{Nd}. Cependant, cela inclurait tous les caractères Unicode qui sont des chiffres dans divers systèmes d'écriture, ce qui n'est presque certainement pas ce qui est requis dans les publications IETF.

La construction \p{IsBasicLatin} est essentiellement une référence à l'ASCII hérité. Elle peut être remplacée par la classe de caractères [\u0000-\u007f].

5.2 XSD Regexps

Tout I-Regexp est également une expression régulière XSD [XSD-2], donc le mappage est une fonction d'identité (Identity Function).

Notez que quelques erratas pour [XSD-2] ont été corrigés dans [XSD-1.1-2]. Par conséquent, il est également inclus dans les références normatives (section 9.1). XSD 1.1 est moins largement implémenté que XSD 1.0, et les implémentations de XSD 1.0 sont susceptibles d'inclure ces corrections de bogues. Aux fins de cette spécification, une implémentation des expressions régulières XSD 1.0 équivaut à une implémentation des expressions régulières XSD 1.1.

5.3 ECMAScript Regexps

Effectuez les étapes suivantes sur un I-Regexp pour obtenir une expression régulière ECMAScript [ECMA-262]:

  • Pour tous les points (.) non échappés en dehors des classes de caractères (première alternative de la production charClass), remplacez le point par [^\n\r].
  • Enveloppez le résultat dans ^(?: et )$.

L'expression régulière ECMAScript doit être interprétée comme un motif Unicode (Unicode Pattern) (indicateur "u"; voir la section 21.2.2 "Sémantique des motifs" (Pattern Semantics) de [ECMA-262]).

Notez que lorsqu'un littéral d'expression régulière (Regexp Literal) est requis, l'expression régulière réelle doit être entourée de /.

5.4 PCRE, RE2, and Ruby Regexps

Pour obtenir une expression régulière valide dans Perl Compatible Regular Expressions (PCRE) [PCRE2], la bibliothèque d'expressions régulières RE2 du langage de programmation Go [RE2] et le langage de programmation Ruby, effectuez les mêmes étapes qu'à la section 5.3, sauf que la dernière étape est:

  • Entourez l'expression régulière de \A(?: et )\z.