Propriétés des caractères Unicode
Trois nouvelles séquences d'échappement
pour trouver des types de caractères sont disponibles lorsque
le mode UTF-8 est sélectionné. Elles sont :
- \p{xx}
- un caractère avec les propriétés xx
- \P{xx}
- un caractère sans les propriétés xx
- \X
- une séquence étendue Unicode
Les noms des propriétés représentés par xx
ci-dessus
sont limités aux catégories de propriétés générales Unicode. Chaque caractère
a exactement une seule de ces propriétés, spécifié par une abréviation sur deux caractères.
Pour des raisons de compatibilité avec Perl, la négation peut être spécifiée
en incluant un accent circonflexe entre l'accolade ouvrante et le nom de la
propriété. Par exemple, \p{^Lu}
équivaut à la même chose que
\P{Lu}
.
Si une seule lettre est spécifiée avec \p
ou \P
,
il inclut toutes les propriétés qui commencent par cette lettre. Dans ce cas,
en l'absence de négation, les accolades dans la séquence d'échappement sont
optionnelles ; ceci revient à la même chose :
Codes des propriétés supportées
Propriétés |
Correspondance |
Notes |
C |
Autre |
|
Cc |
Contrôle |
|
Cf |
Format |
|
Cn |
Non affecté |
|
Co |
Utilisation privée |
|
Cs |
Substitut |
|
L |
Lettre |
Inclut les propriétés suivantes : Ll ,
Lm , Lo , Lt et
Lu .
|
Ll |
Lettre en minuscule |
|
Lm |
Lettre de modification |
|
Lo |
Autres lettres |
|
Lt |
Lettre titrée |
|
Lu |
Lettre en majuscule |
|
M |
Marque |
|
Mc |
Marque d'espacement |
|
Me |
Marque d'enfermement |
|
Mn |
Marque non espacée |
|
N |
Nombre |
|
Nd |
Nombre décimal |
|
Nl |
Nombre Lettre |
|
No |
Autres nombres |
|
P |
Ponctuation |
|
Pc |
Ponctuation de connecteur |
|
Pd |
Tiret de ponctuation |
|
Pe |
Ponctuation de fermeture |
|
Pf |
Ponctuation finale |
|
Pi |
Ponctuation initiale |
|
Po |
Autres ponctuations |
|
Ps |
Ponctuation ouvrante |
|
S |
Symbole |
|
Sc |
Symbole monétaire |
|
Sk |
Symbole de modification |
|
Sm |
Symbole mathématique |
|
So |
Autres symboles |
|
Z |
Séparateur |
|
Zl |
Séparateur de ligne |
|
Zp |
Séparateur de paragraphe |
|
Zs |
Séparateur d'espace |
|
Les propriétés étendues comme InMusicalSymbols
ne sont pas supportées
par PCRE.
La sensibilité à la casse de la recherche n'affecte pas les
séquences d'échappement. Par exemple, \p{Lu}
cherche toujours et uniquement les lettres en majuscules
Les jeux de caractères unicodes sont définis comme appartenant à certains scripts.
Un caractère d'un de ces jeux peut être trouvé en utilisant un
nom de script. Par exemple :
Ceux qui ne font pas partis d'un script identifié sont regroupés
dans Common
. Voici la liste courante des scripts :
Scripts supportés
Arabic |
Armenian |
Avestan |
Balinese |
Bamum |
Batak |
Bengali |
Bopomofo |
Brahmi |
Braille |
Buginese |
Buhid |
Canadian_Aboriginal |
Carian |
Chakma |
Cham |
Cherokee |
Common |
Coptic |
Cuneiform |
Cypriot |
Cyrillic |
Deseret |
Devanagari |
Egyptian_Hieroglyphs |
Ethiopic |
Georgian |
Glagolitic |
Gothic |
Greek |
Gujarati |
Gurmukhi |
Han |
Hangul |
Hanunoo |
Hebrew |
Hiragana |
Imperial_Aramaic |
Inherited |
Inscriptional_Pahlavi |
Inscriptional_Parthian |
Javanese |
Kaithi |
Kannada |
Katakana |
Kayah_Li |
Kharoshthi |
Khmer |
Lao |
Latin |
Lepcha |
Limbu |
Linear_B |
Lisu |
Lycian |
Lydian |
Malayalam |
Mandaic |
Meetei_Mayek |
Meroitic_Cursive |
Meroitic_Hieroglyphs |
Miao |
Mongolian |
Myanmar |
New_Tai_Lue |
Nko |
Ogham |
Old_Italic |
Old_Persian |
Old_South_Arabian |
Old_Turkic |
Ol_Chiki |
Oriya |
Osmanya |
Phags_Pa |
Phoenician |
Rejang |
Runic |
Samaritan |
Saurashtra |
Sharada |
Shavian |
Sinhala |
Sora_Sompeng |
Sundanese |
Syloti_Nagri |
Syriac |
Tagalog |
Tagbanwa |
Tai_Le |
Tai_Tham |
Tai_Viet |
Takri |
Tamil |
Telugu |
Thaana |
Thai |
Tibetan |
Tifinagh |
Ugaritic |
Vai |
Yi |
|
|
|
|
La séquence \X
cherche n'importe quel groupe de
graphème Unicode étendu. Un groupe de graphème est une chaîne
composée d'un ou plusieurs caractères Unicode qui se combinent
pour former un seul glyphe. Dans les faits, cela revient à utiliser
le caractère .
sachant qu'il va matcher un
caractère composé, peu importe le nombre de caractères individuel
nécessaire à l'afficher.
Dans les versions PCRE inférieures à 8.32 (ce qui correspond aux
versions de PHP antérieures à la version 5.4.14 lorsque la
bibliothèque interne est utilisée), \X
était
équivalent à (?>\PM\pM*)
. Aussi, il matchait
un caractère sans propriété "mark", suivi par aucun ou plusieurs
caractères possédant la propriété "mark", et traitait la séquence
comme un groupe atomique (voir ci-dessous). Les caractères
avec la propriété "mark" sont typiquement les lettres accentuées
qui affectent le caractère qui la précède.
La recherche de caractères par les propriétés Unicode n'est pas la méthode
la plus rapide, car PCRE doit chercher une structure qui contient les données
dans plus de quinze mille caractères. C'est pour cela que les séquences
traditionnelles comme \d
et
\w
n'utilisent pas les propriétés Unicode dans PCRE.