Regular Expressions
Matchers UTF-8: Lettres, Marques, Ponctuation etc.
Recherche…
Correspondance des lettres dans différents alphabets
Les exemples ci-dessous sont donnés en Ruby, mais les mêmes appariements devraient être disponibles dans toutes les langues modernes.
Disons que nous avons la chaîne "AℵNaïve"
, produite par Messy Artificial Intelligence. Il est composé de lettres, mais \w
matcher générique ne correspondra pas beaucoup:
▶ "AℵNaïve"[/\w+/]
#⇒ "A"
La manière correcte de faire correspondre une lettre Unicode avec des marques combinées consiste à utiliser \X
pour spécifier un cluster grapheme. Il y a une mise en garde pour Ruby, cependant. Onigmo, le moteur de regex pour Ruby, utilise toujours l'ancienne définition d'un cluster grapheme . Il n’a pas encore été mis à jour dans Extended Grapheme Cluster, comme défini dans l’ Annexe 29 de la norme Unicode .
Donc, pour Ruby, nous pourrions avoir une solution de contournement: \p{L}
ira presque bien, sauf que cela échoue sur l'accent diacritique combiné sur i
:
▶ "AℵNaïve"[/\p{L}+/]
#⇒ "AℵNai"
En ajoutant les «symboles de marque» à l’expression, nous pouvons enfin tout faire correspondre:
▶ "AℵNaïve"[/[\p{L}\p{M}]+/]
#⇒ "AℵNaïve"