Character Properties
Character properties are available using \p{ and its
set complement, PROP}\P{. For the
seven major Unicode General Category properties of just one letter, the
braces on the PROP}\p and \P are optional. So you may write \pL for any letter or \pN for any number, but you must use braces
for anything longer, like \p{Lm} or
\p{Nl}.
Most properties are directly defined in the Unicode Standard, but
some, usually composites built out of the standard properties, are
peculiar to Perl. For example Nl and
Mn are standard Unicode General
Categories representing letter-numbers and nonspacing combining marks,
while Perl_Space is of Perl’s own
devising.
Properties may be used by themselves or combined in a constructed character class:
if ($var =~ /^\p{alpha}+$/) { say "all alphabetic" }
if ($var =~ s/[^\pL\pN]//g) { say "deleted all nonalphanumerics" }There are a great many properties, and some of those commonly used
ones each cover more characters than many people imagine. For example,
the alpha and word properties each cover over 100,000
characters, with word necessarily
being the larger of the two as it is a proper superset of alpha.
The current list of properties supported by your release of Perl can be found in the perluniprops manpage, including how many characters each property matches. Perl closely tracks the Unicode Standard, so as new properties are added to Unicode, they are also added to Perl. For official Unicode properties, see UAX #44: Unicode Character Database, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access