Властивості 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 | інше | |
Cc | Control | |
Cf | Формат | |
Cn | Не присвоєно | |
Co | Приватне використання | |
Cs | Сурогат | |
L | Літера | Включає такі властивості: Ll Lm Lo Lt и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
Arabic | Armenian | Avestan | < code class="literal">Balinese | Bamum | |
Batak | Bengali | Bopomofo < /td> | Brahmi | Braille | |
Buginese | Buhid | Canadian_Aboriginal | Carian | Chakma | |
Cham | Cherokee | Common | Coptic | Cuneiform< /code> | |
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 | |
Kharoshthi | Khmer | Lao | Latin | ||
Lepcha | Limbu | < code class="literal">Linear_B | Lisu | Lycian | |
Lydian | Malayalam < /td> | Mandaic | Meetei_Mayek | Meroitic_Cursive | |
Meroitic_Hieroglyphs | Miao | Mongolian | Myanmar | New_Tai_Lue | |
Nko | Ogham | Old_Italic | Old_Persian< /code> | 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 | ||
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 властивості.