Je suis en train de faire correspondre des identifiants, mais maintenant j'ai un problème: mes identifiants sont autorisés à contenir des caractères Unicode. Par conséquent, l'ancienne façon de faire les choses ne suffit pas:Correspond à unicode dans les expressions rationnelles de ply
t_IDENTIFIER = r"[A-Za-z](\\.|[A-Za-z_0-9])*"
Dans my markup language analyseur I correspondre les caractères unicode en permettant à tous les caractères sauf ceux que j'utilise explicitement, parce que mon langage de balisage a seulement deux ou trois personnages que je dois échapper de cette façon.
Comment puis-je faire correspondre tous les caractères Unicode avec les expressions rationnelles python et ply? Est-ce aussi une bonne idée? Je voudrais que les gens utilisent des identifiants comme Ω »« foo² väli π comme identifiants (noms de variables et autres) dans leurs programmes. Zut! Je veux que les gens puissent écrire des programmes dans leur propre langue si c'est pratique! Quoi qu'il en soit, unicode est supporté de nos jours dans une grande variété d'endroits, et il devrait se propager. Edit: Les classes de caractères POSIX ne semblent pas être reconnues par les expressions rationnelles python.
>>> import re
>>> item = re.compile(r'[[:word:]]')
>>> print item.match('e')
None
Modifier: Pour mieux expliquer ce dont j'ai besoin. J'aurais besoin d'un regex qui correspond à tous les caractères imprimables Unicode, mais pas aux caractères ASCII. Editer: r "\ w" fait un peu ce que je veux, mais il ne correspond pas à «», et j'ai aussi besoin d'une regex qui ne correspond pas aux nombres.
Il ne semble pas que Python PCRE comprend des classes sous-jacentes soit: \ p {} IsAlpha – Axeman