Властивості Unicode-символів

Починаючи з версії 5.1.0, були додані три додаткові послідовності, що управляють, збігаються з деякими загальними символьними типами у режимі UTF-8Вот они:

\p{xx}

символ із властивістю xx

\P{xx}

символ без якості xx

\X

розширена послідовність Unicode

Імена властивостей, представлені вище як xx, обмежені загальними категоріями властивостей Unicode. Кожен символ має рівно одну таку властивість, що вказується дволітерною абревіатурою. Для сумісності з Perl також можна вказати заперечення додаванням знака «^» між дужкою та ім'ям властивості. Наприклад, \p{^Lu} — це те саме, що й \P{Lu}

Якщо з \pили\P вказана лише одна літера, вона включає всі властивості, що починаються з цієї літери. У разі, якщо не використовується заперечення, фігурні дужки необов'язкові; наступні два приклади еквівалентні:

\p{L}
\pL

Підтримувані коди властивостей

СвойствоСовпадениеЗамечание
Cінше
CcControl
CfФормат
CnНе присвоєно
CoПриватне використання
CsСурогат
LЛітераВключає такі властивості: LlLmLoLtиLu
LlРядкова літера
LmМодифікатор літери
LoІнша літера
Ltвелика буква
LuПрописна буква
MЗнак
McПробільний знак
MeНавколишній знак
MnНе пробільний знак
NЧисло
NdДесяткова кількість
NlЛітерне число
NoІнше число
PПунктуація
PcЗ'єднувальна пунктуація
PdЗнаки тире
PeЗакриваюча пунктуація
PfЗаключна пунктуація
PiПочаткова пунктуація
PoІнша пунктуація
PsВідкриваюча пунктуація
SСимвол
ScГрошовий знак
SkМодифікатор символу
SmМатематичний символ
SoІнший символ
ZРозділювач
ZlРозділювач рядка
ZpРозділювач абзацу
ZsПробільний роздільник

Розширені властивості, такі як музичні символи (InMusicalSymbols) не підтримуються в PCRE.

Вказування реєстронезалежного (безреєстрового) режиму не впливає на ці керуючі послідовності. Наприклад, \p{Lu} завжди збігається тільки з великими літерами.

Підмножини Unicode символів описуються як такі, що належать певним сценаріям. Будь-який символ цих підмножин може бути знайдений з використанням імені сценарію. Наприклад:

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

Також ті символи, які не є частиною конкретного сценарію об'єднані разом у сценарій CommonТекущий список сценариев:

< td>Kayah_Li< /tr>< td>Ugaritic

Підтримувані сценарії
ArabicArmenianAvestan< code class="literal">BalineseBamum
BatakBengaliBopomofo< /td>BrahmiBraille
BugineseBuhidCanadian_AboriginalCarianChakma
ChamCherokeeCommonCopticCuneiform< /code>
CypriotCyrillicDeseretDevanagariEgyptian_Hieroglyphs
EthiopicGeorgianGlagoliticGothicGreek
GujaratiGurmukhiHanHangulHanunoo
HebrewHiraganaImperial_AramaicInheritedInscriptional_Pahlavi
Inscriptional_ParthianJavaneseKaithiKannadaKatakana
KharoshthiKhmerLaoLatin
LepchaLimbu< code class="literal">Linear_BLisuLycian
LydianMalayalam< /td>MandaicMeetei_MayekMeroitic_Cursive
Meroitic_HieroglyphsMiaoMongolianMyanmarNew_Tai_Lue
NkoOghamOld_ItalicOld_Persian< /code>Old_South_Arabian
Old_TurkicOl_ChikiOriyaOsmanyaPhags_Pa
PhoenicianRejangRunicSamaritanSaurashtra
SharadaShavianSinhalaSora_SompengSundanese
Syloti_NagriSyriacTagalogTagbanwaTai_Le
Tai_ThamTai_VietTakriTamilTelugu
ThaanaThaiTibetanTifinagh
Vai< code class="literal">Yi    

\X знаходить розширений Unicode графемний кластер. Розширений графемний кластер — це один або кілька символів Unicode, які об'єднуються в один символьний знак (гліф). По суті, його можна розглядати як Unicode еквівалент для , оскільки він знаходить один незалежний комплексний символ, незалежно від того, скільки окремих символів використовується для його малювання.

Для версій PCRE до 8.32 (що відповідає версіям PHP до 5.4.14 під час використання вбудованої бібліотеки PCRE), \Xравносилен(?>\PM\pM*). Таким чином, він шукає символи без властивості "mark", і розглядає послідовність як атомарну групу (див. нижче). Символи з властивістю "mark" зазвичай є відмітними ознаками, які впливають на попередній символ.

Збіг символів за Unicode властивістю не є швидкою операцією, тому для цієї мети PCRE необхідно здійснити пошук у структурі даних з більш ніж 15 тисяч символів. Тому традиційні керуючі послідовності в PCRE, такі як \dи\wне використовують Unicode властивості.