7
votes

Comment obtenir une liste de tous les caractères Unicode qui ont une propriété donnée?

Sans boucler sur toute la gamme de caractères Unicode, comment puis-je obtenir une liste de caractères ayant une propriété donnée? En particulier, je veux une liste de tous les caractères qui sont des chiffres (c'est-à-dire ceux qui correspondent à / \ d / ). J'ai regardé Unicode :: ucd , et il est utile pour déterminer les propriétés d'un caractère donné, mais il ne semble pas y avoir un moyen d'obtenir des caractères de liste qui possèdent une propriété.


0 commentaires

4 Réponses :


0
votes

Quels caractères / \ d / match dépend entièrement de votre implémentation de RegexP (bien que la norme 0-9 soit garantie). Dans le cas de Perl the Perl locale utilisé définit quels caractères sont considérés comme alphabétiques et chiffres.


1 commentaires

Perl transforme les chaînes dans UTF8 avant de les exécuter à travers le moteur Regex. La seule chose que Perl locale affecte la manière dont une chaîne de byèse crue est transformée en UTF8. Une fois qu'une chaîne est dans UTF8, Perl utilisera toujours la même définition d'ISDigit, indépendante de la locale.



6
votes

La liste des caractères Unicode pour chaque classe est générée à partir de la spécification Unicode lorsque vous compilez Perl et est généralement stocké dans / usr / lib / perl-votreperlversion / Unicore / lib / gc_sc /

Par exemple, la liste des plages de caractères Unicode qui correspondent à Isdigit (A.k.a. \ d) est stockée dans le fichier /usr/lib/perl-yourperlversion/unicore/lib/gc_sc/digit.pl


1 commentaires

Merci, c'est presque exactement ce que je cherchais. J'aurai encore une boucle sur eux pour construire une liste, mais au moins cela ne prendra pas pour toujours et une journée.



0
votes

Il n'y a aucun moyen de le faire sans itération à travers tous les personnages. (Si vous créez une énorme chaîne avec chacune d'elles et utilisez un REGEXP, vous devez toujours faire la boucle au moins une fois, pour créer la chaîne).


1 commentaires

Une partie heureuse du processus de construction de Perl crée un ensemble de fichiers sous unicore dans l'un des répertoires libérés qui ont déjà beaucoup de travaux effectués pour vous. Je ne sais pas s'ils sont officiels ou non, j'ai une question à la liste Perl 5 porteurs pour savoir s'il est prudent de les utiliser.



1
votes

Même mieux que Unicore / lib / gc_sc / digit.pl est unicore / to / chiffre.pl . C'est une cartographie directe de caractères unicode chiffres (bien, vraiment leurs compensations) à leurs valeurs numériques. Cela signifie au lieu de: xxx

je peux dire: xxx

ou même meilleur: xxx


0 commentaires