Propiedades de los caracteres Unicode
A partir de 5.1.0, están disponibles
tres secuencias de escape adicionales para comparar tipos de caracteres genéricos
cuando el modo UTF-8 está seleccionado. Son:
- \p{xx}
- un carácter con la propiedad xx
- \P{xx}
- un carácter sin la propiedad xx
- \X
- una secuencia Unicode extendida
Los nombres de las propiedades representadas arriba por xx
están limitadas
a las propiedades de la categoría general de Unicode. Cada carácter tiene exactamente una
propiedad, especificada por una abreviatura de dos letras. Por compatibilidad con
Perl, la negación se puede especificar incluyendo un acento circunflejo entre la
llave de apertura y el nombre de la propiedad. Por ejemplo, \p{^Lu}
es lo mismo que \P{Lu}
.
Si sólo se especifica una letra con \p
o
\P
, se incluyen todas las propiedades que comienzan con esa
letra. En este caso, en la ausencia de negación, las llaves en la
secuencia de escape son opcionales; estos dos ejemplos tienen el mismo efecto:
Códigos de propiedades admitidos
Propiedad |
Coincidencias |
Notas |
C |
Otro |
|
Cc |
Control |
|
Cf |
Formato |
|
Cn |
Sin asignar |
|
Co |
Uso privado |
|
Cs |
Sustituto |
|
L |
Letra |
Incluye las siguientes propiedades: Ll ,
Lm , Lo , Lt y
Lu .
|
Ll |
Letra minúscula |
|
Lm |
Letra modificadora |
|
Lo |
Otra letra |
|
Lt |
Letra de título |
|
Lu |
Letra mayúscula |
|
M |
Marca |
|
Mc |
Marca de espacio |
|
Me |
Marca de cierre |
|
Mn |
Marca de no-espacio |
|
N |
Número |
|
Nd |
Número decimal |
|
Nl |
Número letra |
|
No |
Otro número |
|
P |
Puntuación |
|
Pc |
Puntuación de conexión |
|
Pd |
Puntuación guión |
|
Pe |
Puntuación de cierre |
|
Pf |
Puntuación final |
|
Pi |
Puntuación inicial |
|
Po |
Otra puntuación |
|
Ps |
Puntuación de apertura |
|
S |
Símbolo |
|
Sc |
Símbolo de moneda |
|
Sk |
Símbolo modificador |
|
Sm |
Símbolo matemático |
|
So |
Otro símbolo |
|
Z |
Separador |
|
Zl |
Separador de línea |
|
Zp |
Separador de párrafo |
|
Zs |
Separador de espacio |
|
Las propiedades extendidas tales como InMusicalSymbols
no están
admitidas por PCRE.
El especificar coincidicencias insensibles a mayúsculas-minúsculas no afecta a estas secuencias
de escape. Por ejemplo, \p{Lu}
siempre coincide con letras mayúsculas.
Los conjuntos de caracteres Unicode están definidos como pertenecientes a ciertos alfabetos. Se
puede hacer coincidir un carácter de uno de estos conjuntos usando un nombre de alfabeto. Por
ejemplo:
Aquellos que no son parte de un alfabeto identificado, son metidos en el mismo saco como
Common
. La lista actual de alfabetos es:
Supported scripts
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 |
|
|
|
|
El escape \X
coincide con un cluster de grafemas ampliado
de Unicode. Un clúster de grafemas ampliado es uno o más caracteres Unicode
que se combinan para formar un único glifo. A todos los efectos, se puede pensar en ello como
el equivalente Unicode de .
ya que coincidirá con un
carácter compuesto, independientemente de cúantos caracteres individuales se
usan en realidad para representarlo.
En versiones de PCRE anteriores a la 8.32 (las cuales se corresponden con versiones de PHP
anteriores a la 5.4.14 al usar la biblioteca PCRE incluida), \X
es equivalente a (?>\PM\pM*)
. Esto es, coincide con un
carácter sin la propiedad "marca", seguido de cero o más caracteres
con la propiedad "marca", y trata la secuencia como un grupo atómico (véase
más abajo). Los caracteres con la propiedad "marca" son normalmente acentos que
afectan al carácter predecente.
La comparación de caracteres por propiedades Unicode no es rápida, porque PCRE ha
de buscar una estructura que contiene datos por más de quince mil
caracteres. Es por esto por lo que las secuencias de escape tradicionales tales como
\d
y \w
no usan propiedades Unicode
en PCRE.