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:

\p{L}
\pL
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:

  • \p{Greek}
  • \P{Han}

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.