Sujet : Du nouveau dans les expressions rationnelles : I-Regexp
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.comp.lang.regexpDate : 14. Oct 2023, 11:37:28
Autres entêtes
Organisation : There's no cabale
Message-ID : <ugdngp$hnj$1@cabale.usenet-fr.net>
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4
Bonjour,
Le RFC 9485 vient tout juste d'être publié, qui a vocation à devenir
un standard internet (pour le moment à l'étape PROPOSED STANDARD).
Lien : <
https://www.rfc-editor.org/info/rfc9485>
Celui-ci définit I-Regexp, un format d'expressions rationnelles avec
quelques limitations dans le but d'être le plus possible interopérable
dans différentes bibliothèques de regexp.
Parmi les limitations :
- Il n'y a pas de possibilité de capturer une sous-chaîne, que ce soit
pour la retrouver ailleurs dans la chaîne ou pour la retourner à
l'appelant. Par exemple on peut tester par "(http|https)://(.*)" si
une chaîne ressemble à une URL, mais on ne pourra pas savoir si c'était
http ou https, ni extraire le nom de domaine et le chemin.
- Il n'y a pas de séquence \lettre comptant pour une classe de caractères.
Par exemple, au lieu de \d il faut écrire [0-9] et au lieu de \S ce
sera [^ \n\t\r]. Cela présente un réel intérêt pour l'interopérabilité,
parce que par exemple dans certains langages de regexp le \d regroupe
n'importe quel caractère Unicode qui soit un chiffre dans n'importe
quel système d'écriture.
- Il n'y a pas d'assertions, ni positives ni négatives, ni en avant ni
en arrière. C'est évidemment normal puisque ceci n'existe que dans des
systèmes de regexp avancés tels que Perl et PCRE, mais il s'agissait
de mon mécanisme préféré, celui sur lequel j'ai le plus écrit dans ce
groupe.
En contrepartie, pour prétendre être compatible I-Regexp, il faut :
- prendre en charge tout Unicode, aussi bien dans les expressions
elles-mêmes que dans le texte traité ;
- prendre en charge les propriétés Unicode, par exemple \p{N} pour
un chiffre dans n'importe quel système d'écriture, \p{Lu} pour
une lettre majuscule ou \P{Ll} pour tout ce qui n'est pas une
lettre minuscule.
En outre, il est vivement recommandé aux implémenteurs d'I-Regexp de
passer une série de tests pour vérifier que leur implémentation est
strictement conforme, et de documenter si ces tests de conformité ont
été (ou n'ont pas été) effectués.
-- Olivier Miakinen