Propiedades de caracteres Unicode
Desde 5.1.0, tres
secuencias de escape adicionales para coincidir con tipos de caracteres genéricos están disponibles
cuando se selecciona el modo UTF-8. 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 propiedades representados por xx
arriba están limitados
a las propiedades generales de categoría Unicode. Cada carácter tiene exactamente una
de estas propiedades, especificada por una abreviatura de dos letras. Para compatibilidad con
Perl, la negación puede especificarse incluyendo una circunflejo entre la llave de apertura y el nombre de la propiedad. Por ejemplo, \p{^Lu}
es lo mismo que \P{Lu}
.
Si solo se especifica una letra con \p
o
\P
, incluye todas las propiedades que comienzan con esa
letra. En este caso, en 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 |
Coincide con |
Notas |
C |
Otro |
|
Cc |
Control |
|
Cf |
Formato |
|
Cn |
No asignado |
|
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 con mayúscula inicial |
|
Lu |
Letra mayúscula |
|
M |
Marca |
|
Mc |
Marca de espacio |
|
Me |
Marca de cierre |
|
Mn |
Marca no espaciada |
|
N |
Número |
|
Nd |
Número decimal |
|
Nl |
Número de letra |
|
No |
Otro número |
|
P |
Puntuación |
|
Pc |
Puntuación de conexión |
|
Pd |
Puntuación de 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 |
Incluye emojis |
Z |
Separador |
|
Zl |
Separador de línea |
|
Zp |
Separador de párrafo |
|
Zs |
Separador de espacio |
|
Las propiedades extendidas como InMusicalSymbols
no
son soportadas por PCRE.
Especificar coincidencia sin distinción de mayúsculas y minúsculas no afecta estas secuencias de escape.
Por ejemplo, \p{Lu}
siempre coincide solo con letras mayúsculas.
Los conjuntos de caracteres Unicode están definidos como pertenecientes a ciertos guiones. Un
carácter de uno de estos conjuntos puede coincidir usando un nombre de guión. Por
ejemplo:
Aquellos que no son parte de un guión identificado se agrupan juntos como
Common
. La lista actual de guiones es:
Guiones admitidos
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 secuencia de escape \X
coincide con un grupo de glifos extendidos de Unicode. Un grupo de glifos extendidos de Unicode es uno o más caracteres Unicode
que se combinan para formar un glifo. En efecto, esto puede considerarse como
el equivalente de Unicode de .
ya que coincidirá con un
carácter compuesto, independientemente de cuántos caracteres individuales se
utilicen realmente para renderizarlo.
En versiones de PCRE anteriores a 8.32 (que corresponde a versiones de PHP anteriores a 5.4.14 cuando se usa la biblioteca PCRE incluida), \X
es equivalente a (?>\PM\pM*)
. Es decir, 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 (ver más abajo). Los caracteres con la propiedad "marca" son típicamente acentos que afectan al carácter anterior.
Coincidir con caracteres por propiedad Unicode no es rápido, porque PCRE tiene
que buscar una estructura que contiene datos para más de quince mil
caracteres. Por eso las secuencias de escape tradicionales como
\d
y \w
no usan propiedades Unicode
en PCRE.