4 perlrecharclass - Perl Regular Expression Character Classes
8 The top level documentation about Perl regular expressions
11 This manual page discusses the syntax and use of character
12 classes in Perl Regular Expressions.
14 A character class is a way of denoting a set of characters,
15 in such a way that one character of the set is matched.
16 It's important to remember that matching a character class
17 consumes exactly one character in the source string. (The source
18 string is the string the regular expression is matched against.)
20 There are three types of character classes in Perl regular
21 expressions: the dot, backslashed sequences, and the form enclosed in square
22 brackets. Keep in mind, though, that often the term "character class" is used
23 to mean just the bracketed form. This is true in other Perl documentation.
27 The dot (or period), C<.> is probably the most used, and certainly
28 the most well-known character class. By default, a dot matches any
29 character, except for the newline. The default can be changed to
30 add matching the newline with the I<single line> modifier: either
31 for the entire regular expression using the C</s> modifier, or
32 locally using C<(?s)>.
34 Here are some examples:
38 "" =~ /./ # No match (dot has to match a character)
39 "\n" =~ /./ # No match (dot does not match a newline)
40 "\n" =~ /./s # Match (global 'single line' modifier)
41 "\n" =~ /(?s:.)/ # Match (local 'single line' modifier)
42 "ab" =~ /^.$/ # No match (dot matches one character)
44 =head2 Backslashed sequences
45 X<\w> X<\W> X<\s> X<\S> X<\d> X<\D> X<\p> X<\P>
46 X<\N> X<\v> X<\V> X<\h> X<\H>
49 Perl regular expressions contain many backslashed sequences that
50 constitute a character class. That is, they will match a single
51 character, if that character belongs to a specific set of characters
52 (defined by the sequence). A backslashed sequence is a sequence of
53 characters starting with a backslash. Not all backslashed sequences
54 are character classes; for a full list, see L<perlrebackslash>.
56 Here's a list of the backslashed sequences that are character classes. They
57 are discussed in more detail below.
59 \d Match a digit character.
60 \D Match a non-digit character.
61 \w Match a "word" character.
62 \W Match a non-"word" character.
63 \s Match a whitespace character.
64 \S Match a non-whitespace character.
65 \h Match a horizontal whitespace character.
66 \H Match a character that isn't horizontal whitespace.
67 \N Match a character that isn't newline. Experimental.
68 \v Match a vertical whitespace character.
69 \V Match a character that isn't vertical whitespace.
70 \pP, \p{Prop} Match a character matching a Unicode property.
71 \PP, \P{Prop} Match a character that doesn't match a Unicode property.
75 C<\d> matches a single character that is considered to be a I<digit>. What is
76 considered a digit depends on the internal encoding of the source string and
77 the locale that is in effect. If the source string is in UTF-8 format, C<\d>
78 not only matches the digits '0' - '9', but also Arabic, Devanagari and digits
79 from other languages. Otherwise, if there is a locale in effect, it will match
80 whatever characters the locale considers digits. Without a locale, C<\d>
81 matches the digits '0' to '9'. See L</Locale, EBCDIC, Unicode and UTF-8>.
83 Any character that isn't matched by C<\d> will be matched by C<\D>.
85 =head3 Word characters
87 A C<\w> matches a single alphanumeric character (an alphabetic character, or a
88 decimal digit) or an underscore (C<_>), not a whole word. Use C<\w+> to match
89 a string of Perl-identifier characters (which isn't the same as matching an
90 English word). What is considered a word character depends on the internal
91 encoding of the string and the locale or EBCDIC code page that is in effect. If
92 it's in UTF-8 format, C<\w> matches those characters that are considered word
93 characters in the Unicode database. That is, it not only matches ASCII letters,
94 but also Thai letters, Greek letters, etc. If the source string isn't in UTF-8
95 format, C<\w> matches those characters that are considered word characters by
96 the current locale or EBCDIC code page. Without a locale or EBCDIC code page,
97 C<\w> matches the ASCII letters, digits and the underscore.
98 See L</Locale, EBCDIC, Unicode and UTF-8>.
100 Any character that isn't matched by C<\w> will be matched by C<\W>.
104 C<\s> matches any single character that is considered whitespace. In the ASCII
105 range, C<\s> matches the horizontal tab (C<\t>), the new line (C<\n>), the form
106 feed (C<\f>), the carriage return (C<\r>), and the space. (The vertical tab,
107 C<\cK> is not matched by C<\s>.) The exact set of characters matched by C<\s>
108 depends on whether the source string is in UTF-8 format and the locale or
109 EBCDIC code page that is in effect. If it's in UTF-8 format, C<\s> matches what
110 is considered whitespace in the Unicode database; the complete list is in the
111 table below. Otherwise, if there is a locale or EBCDIC code page in effect,
112 C<\s> matches whatever is considered whitespace by the current locale or EBCDIC
113 code page. Without a locale or EBCDIC code page, C<\s> matches the five
114 characters mentioned in the beginning of this paragraph. Perhaps the most
115 notable possible surprise is that C<\s> matches a non-breaking space only if
116 the non-breaking space is in a UTF-8 encoded string or the locale or EBCDIC
117 code page that is in effect has that character.
118 See L</Locale, EBCDIC, Unicode and UTF-8>.
120 Any character that isn't matched by C<\s> will be matched by C<\S>.
122 C<\h> will match any character that is considered horizontal whitespace;
123 this includes the space and the tab characters and 17 other characters that are
124 listed in the table below. C<\H> will match any character
125 that is not considered horizontal whitespace.
127 C<\N> is new in 5.12, and is experimental. It, like the dot, will match any
128 character that is not a newline. The difference is that C<\N> will not be
129 influenced by the single line C</s> regular expression modifier. (Note that,
130 there is a second meaning of C<\N> when of the form C<\N{...}>. This form is
131 for named characters. See L<charnames> for those. If C<\N> is followed by an
132 opening brace and something that is not a quantifier, perl will assume that a
133 character name is coming, and not this meaning of C<\N>. For example, C<\N{3}>
134 means to match 3 non-newlines; C<\N{5,}> means to match 5 or more non-newlines,
135 but C<\N{4F}> and C<\N{F4}> are not legal quantifiers, and will cause perl to
136 look for characters named C<4F> or C<F4>, respectively (and won't find them,
137 thus raising an error, unless they have been defined using custom names).
139 C<\v> will match any character that is considered vertical whitespace;
140 this includes the carriage return and line feed characters (newline) plus 5
141 other characters listed in the table below.
142 C<\V> will match any character that is not considered vertical whitespace.
144 C<\R> matches anything that can be considered a newline under Unicode
145 rules. It's not a character class, as it can match a multi-character
146 sequence. Therefore, it cannot be used inside a bracketed character
147 class; use C<\v> instead (vertical whitespace).
148 Details are discussed in L<perlrebackslash>.
150 Note that unlike C<\s>, C<\d> and C<\w>, C<\h> and C<\v> always match
151 the same characters, regardless whether the source string is in UTF-8
152 format or not. The set of characters they match is also not influenced
153 by locale or EBCDIC code page.
155 One might think that C<\s> is equivalent to C<[\h\v]>. This is not true. The
156 vertical tab (C<"\x0b">) is not matched by C<\s>, it is however considered
157 vertical whitespace. Furthermore, if the source string is not in UTF-8 format,
158 and any locale or EBCDIC code page that is in effect doesn't include them, the
159 next line (C<"\x85">) and the no-break space (C<"\xA0">) characters are not
160 matched by C<\s>, but are by C<\v> and C<\h> respectively. If the source
161 string is in UTF-8 format, both the next line and the no-break space are
164 The following table is a complete listing of characters matched by
165 C<\s>, C<\h> and C<\v> as of Unicode 5.2.
167 The first column gives the code point of the character (in hex format),
168 the second column gives the (Unicode) name. The third column indicates
169 by which class(es) the character is matched (assuming no locale or EBCDIC code
170 page is in effect that changes the C<\s> matching).
172 0x00009 CHARACTER TABULATION h s
173 0x0000a LINE FEED (LF) vs
174 0x0000b LINE TABULATION v
175 0x0000c FORM FEED (FF) vs
176 0x0000d CARRIAGE RETURN (CR) vs
178 0x00085 NEXT LINE (NEL) vs [1]
179 0x000a0 NO-BREAK SPACE h s [1]
180 0x01680 OGHAM SPACE MARK h s
181 0x0180e MONGOLIAN VOWEL SEPARATOR h s
186 0x02004 THREE-PER-EM SPACE h s
187 0x02005 FOUR-PER-EM SPACE h s
188 0x02006 SIX-PER-EM SPACE h s
189 0x02007 FIGURE SPACE h s
190 0x02008 PUNCTUATION SPACE h s
191 0x02009 THIN SPACE h s
192 0x0200a HAIR SPACE h s
193 0x02028 LINE SEPARATOR vs
194 0x02029 PARAGRAPH SEPARATOR vs
195 0x0202f NARROW NO-BREAK SPACE h s
196 0x0205f MEDIUM MATHEMATICAL SPACE h s
197 0x03000 IDEOGRAPHIC SPACE h s
203 NEXT LINE and NO-BREAK SPACE only match C<\s> if the source string is in
204 UTF-8 format, or the locale or EBCDIC code page that is in effect includes them.
208 It is worth noting that C<\d>, C<\w>, etc, match single characters, not
209 complete numbers or words. To match a number (that consists of integers),
210 use C<\d+>; to match a word, use C<\w+>.
213 =head3 Unicode Properties
215 C<\pP> and C<\p{Prop}> are character classes to match characters that
216 fit given Unicode classes. One letter classes can be used in the C<\pP>
217 form, with the class name following the C<\p>, otherwise, braces are required.
218 There is a single form, which is just the property name enclosed in the braces,
219 and a compound form which looks like C<\p{name=value}>, which means to match
220 if the property "name" for the character has the particular "value".
221 For instance, a match for a number can be written as C</\pN/> or as
222 C</\p{Number}/>, or as C</\p{Number=True}/>.
223 Lowercase letters are matched by the property I<Lowercase_Letter> which
224 has as short form I<Ll>. They need the braces, so are written as C</\p{Ll}/> or
225 C</\p{Lowercase_Letter}/>, or C</\p{General_Category=Lowercase_Letter}/>
226 (the underscores are optional).
227 C</\pLl/> is valid, but means something different.
228 It matches a two character string: a letter (Unicode property C<\pL>),
229 followed by a lowercase C<l>.
231 For more details, see L<perlunicode/Unicode Character Properties>; for a
232 complete list of possible properties, see
233 L<perluniprops/Properties accessible through \p{} and \P{}>.
234 It is also possible to define your own properties. This is discussed in
235 L<perlunicode/User-Defined Character Properties>.
240 "a" =~ /\w/ # Match, "a" is a 'word' character.
241 "7" =~ /\w/ # Match, "7" is a 'word' character as well.
242 "a" =~ /\d/ # No match, "a" isn't a digit.
243 "7" =~ /\d/ # Match, "7" is a digit.
244 " " =~ /\s/ # Match, a space is whitespace.
245 "a" =~ /\D/ # Match, "a" is a non-digit.
246 "7" =~ /\D/ # No match, "7" is not a non-digit.
247 " " =~ /\S/ # No match, a space is not non-whitespace.
249 " " =~ /\h/ # Match, space is horizontal whitespace.
250 " " =~ /\v/ # No match, space is not vertical whitespace.
251 "\r" =~ /\v/ # Match, a return is vertical whitespace.
253 "a" =~ /\pL/ # Match, "a" is a letter.
254 "a" =~ /\p{Lu}/ # No match, /\p{Lu}/ matches upper case letters.
256 "\x{0e0b}" =~ /\p{Thai}/ # Match, \x{0e0b} is the character
257 # 'THAI CHARACTER SO SO', and that's in
258 # Thai Unicode class.
259 "a" =~ /\P{Lao}/ # Match, as "a" is not a Laotian character.
262 =head2 Bracketed Character Classes
264 The third form of character class you can use in Perl regular expressions
265 is the bracketed form. In its simplest form, it lists the characters
266 that may be matched inside square brackets, like this: C<[aeiou]>.
267 This matches one of C<a>, C<e>, C<i>, C<o> or C<u>. Like the other
268 character classes, exactly one character will be matched. To match
269 a longer string consisting of characters mentioned in the character
270 class, follow the character class with a quantifier. For instance,
271 C<[aeiou]+> matches a string of one or more lowercase ASCII vowels.
273 Repeating a character in a character class has no
274 effect; it's considered to be in the set only once.
278 "e" =~ /[aeiou]/ # Match, as "e" is listed in the class.
279 "p" =~ /[aeiou]/ # No match, "p" is not listed in the class.
280 "ae" =~ /^[aeiou]$/ # No match, a character class only matches
281 # a single character.
282 "ae" =~ /^[aeiou]+$/ # Match, due to the quantifier.
284 =head3 Special Characters Inside a Bracketed Character Class
286 Most characters that are meta characters in regular expressions (that
287 is, characters that carry a special meaning like C<.>, C<*>, or C<(>) lose
288 their special meaning and can be used inside a character class without
289 the need to escape them. For instance, C<[()]> matches either an opening
290 parenthesis, or a closing parenthesis, and the parens inside the character
291 class don't group or capture.
293 Characters that may carry a special meaning inside a character class are:
294 C<\>, C<^>, C<->, C<[> and C<]>, and are discussed below. They can be
295 escaped with a backslash, although this is sometimes not needed, in which
296 case the backslash may be omitted.
298 The sequence C<\b> is special inside a bracketed character class. While
299 outside the character class C<\b> is an assertion indicating a point
300 that does not have either two word characters or two non-word characters
301 on either side, inside a bracketed character class, C<\b> matches a
311 C<\N{U+I<wide hex char>}>,
316 are also special and have the same meanings as they do outside a bracketed character
319 Also, a backslash followed by two or three octal digits is considered an octal
322 A C<[> is not special inside a character class, unless it's the start
323 of a POSIX character class (see below). It normally does not need escaping.
325 A C<]> is either the end of a POSIX character class (see below), or it
326 signals the end of the bracketed character class. Normally it needs
327 escaping if you want to include a C<]> in the set of characters.
328 However, if the C<]> is the I<first> (or the second if the first
329 character is a caret) character of a bracketed character class, it
330 does not denote the end of the class (as you cannot have an empty class)
331 and is considered part of the set of characters that can be matched without
336 "+" =~ /[+?*]/ # Match, "+" in a character class is not special.
337 "\cH" =~ /[\b]/ # Match, \b inside in a character class
338 # is equivalent with a backspace.
339 "]" =~ /[][]/ # Match, as the character class contains.
341 "[]" =~ /[[]]/ # Match, the pattern contains a character class
342 # containing just ], and the character class is
345 =head3 Character Ranges
347 It is not uncommon to want to match a range of characters. Luckily, instead
348 of listing all the characters in the range, one may use the hyphen (C<->).
349 If inside a bracketed character class you have two characters separated
350 by a hyphen, it's treated as if all the characters between the two are in
351 the class. For instance, C<[0-9]> matches any ASCII digit, and C<[a-m]>
352 matches any lowercase letter from the first half of the ASCII alphabet.
354 Note that the two characters on either side of the hyphen are not
355 necessary both letters or both digits. Any character is possible,
356 although not advisable. C<['-?]> contains a range of characters, but
357 most people will not know which characters that will be. Furthermore,
358 such ranges may lead to portability problems if the code has to run on
359 a platform that uses a different character set, such as EBCDIC.
361 If a hyphen in a character class cannot syntactically be part of a range, for
362 instance because it is the first or the last character of the character class,
363 or if it immediately follows a range, the hyphen isn't special, and will be
364 considered a character that may be matched. You have to escape the hyphen with
365 a backslash if you want to have a hyphen in your set of characters to be
366 matched, and its position in the class is such that it could be considered part
371 [a-z] # Matches a character that is a lower case ASCII letter.
372 [a-fz] # Matches any letter between 'a' and 'f' (inclusive) or the
374 [-z] # Matches either a hyphen ('-') or the letter 'z'.
375 [a-f-m] # Matches any letter between 'a' and 'f' (inclusive), the
376 # hyphen ('-'), or the letter 'm'.
377 ['-?] # Matches any of the characters '()*+,-./0123456789:;<=>?
378 # (But not on an EBCDIC platform).
383 It is also possible to instead list the characters you do not want to
384 match. You can do so by using a caret (C<^>) as the first character in the
385 character class. For instance, C<[^a-z]> matches a character that is not a
386 lowercase ASCII letter.
388 This syntax make the caret a special character inside a bracketed character
389 class, but only if it is the first character of the class. So if you want
390 to have the caret as one of the characters you want to match, you either
391 have to escape the caret, or not list it first.
395 "e" =~ /[^aeiou]/ # No match, the 'e' is listed.
396 "x" =~ /[^aeiou]/ # Match, as 'x' isn't a lowercase vowel.
397 "^" =~ /[^^]/ # No match, matches anything that isn't a caret.
398 "^" =~ /[x^]/ # Match, caret is not special here.
400 =head3 Backslash Sequences
402 You can put any backslash sequence character class (with the exception of
403 C<\N>) inside a bracketed character class, and it will act just
404 as if you put all the characters matched by the backslash sequence inside the
405 character class. For instance, C<[a-f\d]> will match any digit, or any of the
406 lowercase letters between 'a' and 'f' inclusive.
408 C<\N> within a bracketed character class must be of the forms C<\N{I<name>}> or
409 C<\N{U+I<wide hex char>}> for the same reason that a dot C<.> inside a
410 bracketed character class loses its special meaning: it matches nearly
411 anything, which generally isn't what you want to happen.
415 /[\p{Thai}\d]/ # Matches a character that is either a Thai
416 # character, or a digit.
417 /[^\p{Arabic}()]/ # Matches a character that is neither an Arabic
418 # character, nor a parenthesis.
420 Backslash sequence character classes cannot form one of the endpoints
423 =head3 Posix Character Classes
424 X<character class> X<\p> X<\p{}>
426 X<alpha> X<alnum> X<ascii> X<blank> X<cntrl> X<digit> X<graph>
427 X<lower> X<print> X<punct> X<space> X<upper> X<word> X<xdigit>
429 Posix character classes have the form C<[:class:]>, where I<class> is
430 name, and the C<[:> and C<:]> delimiters. Posix character classes only appear
431 I<inside> bracketed character classes, and are a convenient and descriptive
432 way of listing a group of characters. Be careful about the syntax,
435 $string =~ /[[:alpha:]]/
437 # Incorrect (will warn):
438 $string =~ /[:alpha:]/
440 The latter pattern would be a character class consisting of a colon,
441 and the letters C<a>, C<l>, C<p> and C<h>.
442 These character classes can be part of a larger bracketed character class. For
447 is valid and matches '0', '1', any alphabetic character, and the percent sign.
449 Perl recognizes the following POSIX character classes:
451 alpha Any alphabetical character ("[A-Za-z]").
452 alnum Any alphanumerical character. ("[A-Za-z0-9]")
453 ascii Any character in the ASCII character set.
454 blank A GNU extension, equal to a space or a horizontal tab ("\t").
455 cntrl Any control character. See Note [2] below.
456 digit Any decimal digit ("[0-9]"), equivalent to "\d".
457 graph Any printable character, excluding a space. See Note [3] below.
458 lower Any lowercase character ("[a-z]").
459 print Any printable character, including a space. See Note [4] below.
460 punct Any graphical character excluding "word" characters. See Note [5]
461 space Any whitespace character. "\s" plus the vertical tab ("\cK").
462 upper Any uppercase character ("[A-Z]").
463 word A Perl extension ("[A-Za-z0-9_]"), equivalent to "\w".
464 xdigit Any hexadecimal digit ("[0-9a-fA-F]").
466 Most POSIX character classes have two Unicode-style C<\p> property
467 counterparts. (They are not official Unicode properties, but Perl extensions
468 derived from official Unicode properties.) The table below shows the relation
469 between POSIX character classes and these counterparts.
471 One counterpart, in the column labelled "ASCII-range Unicode" in
472 the table will only match characters in the ASCII range. (On EBCDIC platforms,
473 they match those characters which have ASCII equivalents.)
475 The other counterpart, in the column labelled "Full-range Unicode", matches any
476 appropriate characters in the full Unicode character set. For example,
477 C<\p{Alpha}> will match not just the ASCII alphabetic characters, but any
478 character in the entire Unicode character set that is considered to be
481 (Each of the counterparts has various synonyms as well.
482 L<perluniprops/Properties accessible through \p{} and \P{}> lists all the
483 synonyms, plus all the characters matched by each of the ASCII-range
484 properties. For example C<\p{AHex}> is a synonym for C<\p{ASCII_Hex_Digit}>,
485 and any C<\p> property name can be prefixed with "Is" such as C<\p{IsAlpha}>.)
487 Both the C<\p> forms are unaffected by any locale that is in effect, or whether
488 the string is in UTF-8 format or not, or whether the platform is EBCDIC or not.
489 In contrast, the POSIX character classes are affected. If the source string is
490 in UTF-8 format, the POSIX classes (with the exception of C<[[:punct:]]>, see
491 Note [5]) behave like their "Full-range" Unicode counterparts. If the source
492 string is not in UTF-8 format, and no locale is in effect, and the platform is
493 not EBCDIC, all the POSIX classes behave like their ASCII-range counterparts.
494 Otherwise, they behave based on the rules of the locale or EBCDIC code page.
495 It is proposed to change this behavior in a future release of Perl so that the
496 the UTF8ness of the source string will be irrelevant to the behavior of the
497 POSIX character classes. This means they will always behave in strict
498 accordance with the official POSIX standard. That is, if either locale or
499 EBCDIC code page is present, they will behave in accordance with those; if
500 absent, the classes will match only their ASCII-range counterparts. If you
501 disagree with this proposal, send email to C<perl5-porters@perl.org>.
503 [[:...:]] ASCII-range Full-range backslash Note
504 Unicode Unicode sequence
505 -----------------------------------------------------
506 alpha \p{PosixAlpha} \p{Alpha}
507 alnum \p{PosixAlnum} \p{Alnum}
509 blank \p{PosixBlank} \p{Blank} =
510 \p{HorizSpace} \h [1]
511 cntrl \p{PosixCntrl} \p{Cntrl} [2]
512 digit \p{PosixDigit} \p{Digit} \d
513 graph \p{PosixGraph} \p{Graph} [3]
514 lower \p{PosixLower} \p{Lower}
515 print \p{PosixPrint} \p{Print} [4]
516 punct \p{PosixPunct} \p{Punct} [5]
517 \p{PerlSpace} \p{SpacePerl} \s [6]
518 space \p{PosixSpace} \p{Space} [6]
519 upper \p{PosixUpper} \p{Upper}
520 word \p{PerlWord} \p{Word} \w
521 xdigit \p{ASCII_Hex_Digit} \p{XDigit}
527 C<\p{Blank}> and C<\p{HorizSpace}> are synonyms.
531 Control characters don't produce output as such, but instead usually control
532 the terminal somehow: for example newline and backspace are control characters.
533 In the ASCII range, characters whose ordinals are between 0 and 31 inclusive,
534 plus 127 (C<DEL>) are control characters.
536 On EBCDIC platforms, it is likely that the code page will define this character
537 class to be the counterparts to the ASCII controls, plus the controls that in
538 Unicode have ordinals from 128 through 139.
542 Any character that is I<graphical>, that is, visible. This class consists
543 of all the alphanumerical characters and all punctuation characters.
547 All printable characters, which is the set of all the graphical characters
548 plus whitespace characters that are not also controls.
552 C<\p{PosixPunct}> and C<[[:punct:]]> in the ASCII range match all the
553 non-controls, non-alphanumeric, non-space characters:
554 C<[-!"#$%&'()*+,./:;<=E<gt>?@[\\\]^_`{|}~]> (although if a locale is in effect,
555 it could alter the behavior of C<[[:punct:]]>).
557 When the matching string is in UTF-8 format, C<[[:punct:]]> matches the above
558 set, plus whatever C<\p{Punct}> matches beyond the ASCII range. It matches
559 more than what C<\p{Punct}> matches in the ASCII range, because the POSIX
560 definition of "Punct" includes more than what Unicode calls "Punct"; namely, it
561 includes what Unicode calls "Symbol". In other words, the Posix C<[[:punct:]]>
562 lumps the Unicode "Punct" and "Symbol" together.
564 This character class does not match any characters of Unicode type "Symbol"
565 outside the ASCII range when the matching string is in UTF-8 format.
569 C<\p{SpacePerl}> and C<\p{Space}> differ only in that C<\p{Space}> additionally
570 matches the vertical tab, C<\cK>. Same for the two ASCII-only range forms.
575 X<character class, negation>
577 A Perl extension to the POSIX character class is the ability to
578 negate it. This is done by prefixing the class name with a caret (C<^>).
581 POSIX ASCII-range Full-range backslash
582 Unicode Unicode sequence
583 -----------------------------------------------------
584 [[:^digit:]] \P{PosixDigit} \P{Digit} \D
585 [[:^space:]] \P{PosixSpace} \P{Space}
586 [[:^word:]] \P{PerlWord} \P{Word} \W
588 =head4 [= =] and [. .]
590 Perl will recognize the POSIX character classes C<[=class=]>, and
591 C<[.class.]>, but does not (yet?) support them. Use of
592 such a construct will lead to an error.
597 /[[:digit:]]/ # Matches a character that is a digit.
598 /[01[:lower:]]/ # Matches a character that is either a
599 # lowercase letter, or '0' or '1'.
600 /[[:digit:][:^xdigit:]]/ # Matches a character that can be anything,
601 # but the letters 'a' to 'f' in either case.
602 # This is because the character class contains
603 # all digits, and anything that isn't a
604 # hex digit, resulting in a class containing
605 # all characters, but the letters 'a' to 'f'
609 =head2 Locale, EBCDIC, Unicode and UTF-8
611 Some of the character classes have a somewhat different behaviour depending
612 on the internal encoding of the source string, and the locale that is
613 in effect, and if the program is running on an EBCDIC platform.
615 C<\w>, C<\d>, C<\s> and the POSIX character classes (and their negations,
616 including C<\W>, C<\D>, C<\S>) suffer from this behaviour. (This also affects
617 the backslash sequences C<\b> and C<\B>.)
619 The rule is that if the source string is in UTF-8 format, the character
620 classes match according to the Unicode properties. If the source string
621 isn't, then the character classes match according to whatever locale or EBCDIC
622 code page is in effect. If there is no locale nor EBCDIC, they match the ASCII
623 defaults (52 letters, 10 digits and underscore for C<\w>; 0 to 9 for C<\d>;
624 L</Whitespace> above gives the list for C<\s>).
626 This usually means that if you are matching against characters whose C<ord()>
627 values are between 128 and 255 inclusive, your character class may match
628 or not depending on the current locale or EBCDIC code page, and whether the
629 source string is in UTF-8 format. The string will be in UTF-8 format if it
630 contains characters whose C<ord()> value exceeds 255. But a string may be in
631 UTF-8 format without it having such characters. See L<perluniprops/The
634 For portability reasons, it may be better to not use C<\w>, C<\d>, C<\s>
635 or the POSIX character classes, and use the Unicode properties instead.
639 $str = "\xDF"; # $str is not in UTF-8 format.
640 $str =~ /^\w/; # No match, as $str isn't in UTF-8 format.
641 $str .= "\x{0e0b}"; # Now $str is in UTF-8 format.
642 $str =~ /^\w/; # Match! $str is now in UTF-8 format.
644 $str =~ /^\w/; # Still a match! $str remains in UTF-8 format.