Свойства Unicode-символов
Начиная с версии 5.1.0, были добавлены три дополнительные управляющие
последовательности, совпадающих с некоторыми общими символьными типами
в режиме UTF-8. Вот они:
-
\p{xx}
-
символ со свойством xx
-
\P{xx}
-
символ без свойства xx
-
\X
-
расширенная последовательность Unicode
Имена свойств, представленные выше как xx, ограничены
общими категориями свойств Unicode. Каждый символ имеет ровно одно такое свойство,
указываемое двубуквенной аббревиатурой. Для совместимости с Perl также можно указать
отрицание добавлением знака "^" между открывающей скобкой и именем свойства.
Например, \p{^Lu} - это то же самое, что и \P{Lu}.
Если с \p или \P указана только одна буква,
она включает все свойства, которые начинаются с этой буквы.
В этом случае, если не используется отрицание, фигурные скобки необязательны;
следующие два примера эквивалентны:
Поддерживаемые коды свойств
Свойство |
Совпадение |
Замечание |
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 |
Пробельный разделитель |
|
Расширенные свойства, такие как греческие ("Greek") или музыкальные символы
("InMusicalSymbols") не поддерживаются в PCRE.
Указывание регистро-независимого (безрегистрового) режима не влияет на эти
управляющие последовательности. Например, \p{Lu} всегда
совпадает только с прописными буквами.
Последовательность \X совпадает с любым числом Unicode символов,
формирующих расширенную Unicode последовательность. \X
эквивалентно (?>\PM\pM*).
Это означает, что совпадет символ без свойства "знака" ("mark" property),
за которым идет ноль или более символов со свойством "знака", и вся
последовательность обрабатывается как одна неделимая группа (смотрите ниже).
Символы со свойством "знака" - это обычно знаки ударения, влияющие на
предыдущий символ.
Совпадение символов по Unicode свойству не является быстрой операцией,
потому для этой цели PCRE необходимо осуществить поиск в структуре данных
с более чем пятнадцатью тысяч символов. Поэтому традиционные управляющие
последовательности в PCRE, такие как \d и \w,
не используют Unicode свойства.