Mention \N{U+...} documentation in delta
[p5sagit/p5-mst-13.2.git] / pod / perlre.pod
CommitLineData
a0d0e21e 1=head1 NAME
d74e8afc 2X<regular expression> X<regex> X<regexp>
a0d0e21e 3
4perlre - Perl regular expressions
5
6=head1 DESCRIPTION
7
5d458dd8 8This page describes the syntax of regular expressions in Perl.
91e0c79e 9
cc46d5f2 10If you haven't used regular expressions before, a quick-start
91e0c79e 11introduction is available in L<perlrequick>, and a longer tutorial
12introduction is available in L<perlretut>.
13
14For reference on how regular expressions are used in matching
15operations, plus various examples of the same, see discussions of
16C<m//>, C<s///>, C<qr//> and C<??> in L<perlop/"Regexp Quote-Like
17Operators">.
cb1a09d0 18
0d017f4d 19
20=head2 Modifiers
21
19799a22 22Matching operations can have various modifiers. Modifiers
5a964f20 23that relate to the interpretation of the regular expression inside
19799a22 24are listed below. Modifiers that alter the way a regular expression
5d458dd8 25is used by Perl are detailed in L<perlop/"Regexp Quote-Like Operators"> and
1e66bd83 26L<perlop/"Gory details of parsing quoted constructs">.
a0d0e21e 27
55497cff 28=over 4
29
54310121 30=item m
d74e8afc 31X</m> X<regex, multiline> X<regexp, multiline> X<regular expression, multiline>
55497cff 32
33Treat string as multiple lines. That is, change "^" and "$" from matching
14218588 34the start or end of the string to matching the start or end of any
7f761169 35line anywhere within the string.
55497cff 36
54310121 37=item s
d74e8afc 38X</s> X<regex, single-line> X<regexp, single-line>
39X<regular expression, single-line>
55497cff 40
41Treat string as single line. That is, change "." to match any character
19799a22 42whatsoever, even a newline, which normally it would not match.
55497cff 43
34d67d80 44Used together, as C</ms>, they let the "." match any character whatsoever,
fb55449c 45while still allowing "^" and "$" to match, respectively, just after
19799a22 46and just before newlines within the string.
7b8d334a 47
87e95b7f 48=item i
49X</i> X<regex, case-insensitive> X<regexp, case-insensitive>
50X<regular expression, case-insensitive>
51
52Do case-insensitive pattern matching.
53
54If C<use locale> is in effect, the case map is taken from the current
55locale. See L<perllocale>.
56
54310121 57=item x
d74e8afc 58X</x>
55497cff 59
60Extend your pattern's legibility by permitting whitespace and comments.
61
87e95b7f 62=item p
63X</p> X<regex, preserve> X<regexp, preserve>
64
632a1772 65Preserve the string matched such that ${^PREMATCH}, ${^MATCH}, and
87e95b7f 66${^POSTMATCH} are available for use after matching.
67
e2e6bec7 68=item g and c
69X</g> X</c>
70
71Global matching, and keep the Current position after failed matching.
72Unlike i, m, s and x, these two flags affect the way the regex is used
73rather than the regex itself. See
74L<perlretut/"Using regular expressions in Perl"> for further explanation
75of the g and c modifiers.
76
55497cff 77=back
a0d0e21e 78
79These are usually written as "the C</x> modifier", even though the delimiter
14218588 80in question might not really be a slash. Any of these
a0d0e21e 81modifiers may also be embedded within the regular expression itself using
14218588 82the C<(?...)> construct. See below.
a0d0e21e 83
4633a7c4 84The C</x> modifier itself needs a little more explanation. It tells
7b059540 85the regular expression parser to ignore most whitespace that is neither
55497cff 86backslashed nor within a character class. You can use this to break up
4633a7c4 87your regular expression into (slightly) more readable parts. The C<#>
54310121 88character is also treated as a metacharacter introducing a comment,
55497cff 89just as in ordinary Perl code. This also means that if you want real
14218588 90whitespace or C<#> characters in the pattern (outside a character
f9a3ff1a 91class, where they are unaffected by C</x>), then you'll either have to
7b059540 92escape them (using backslashes or C<\Q...\E>) or encode them using octal,
93hex, or C<\N{}> escapes. Taken together, these features go a long way towards
8933a740 94making Perl's regular expressions more readable. Note that you have to
95be careful not to include the pattern delimiter in the comment--perl has
96no way of knowing you did not intend to close the pattern early. See
97the C-comment deletion code in L<perlop>. Also note that anything inside
7651b971 98a C<\Q...\E> stays unaffected by C</x>. And note that C</x> doesn't affect
99whether space interpretation within a single multi-character construct. For
100example in C<\x{...}>, regardless of the C</x> modifier, there can be no
101spaces. Same for a L<quantifier|Quantifiers> such as C<{3}> or
102C<{5,}>. Similarly, C<(?:...)> can't have a space between the C<?> and C<:>.
103Within any delimiters for such a construct, allowed spaces are not affected by
104C</x>, and depend on the construct. For example, C<\x{...}> can't have spaces
105because hexadecimal numbers don't have spaces in them. But, in C<\p{...}> the
106C<...> can have spaces that follow the Unicode properties rules.
d74e8afc 107X</x>
a0d0e21e 108
109=head2 Regular Expressions
110
04838cea 111=head3 Metacharacters
112
384f06ae 113The patterns used in Perl pattern matching evolved from those supplied in
14218588 114the Version 8 regex routines. (The routines are derived
19799a22 115(distantly) from Henry Spencer's freely redistributable reimplementation
116of the V8 routines.) See L<Version 8 Regular Expressions> for
117details.
a0d0e21e 118
119In particular the following metacharacters have their standard I<egrep>-ish
120meanings:
d74e8afc 121X<metacharacter>
122X<\> X<^> X<.> X<$> X<|> X<(> X<()> X<[> X<[]>
123
a0d0e21e 124
54310121 125 \ Quote the next metacharacter
a0d0e21e 126 ^ Match the beginning of the line
127 . Match any character (except newline)
c07a80fd 128 $ Match the end of the line (or before newline at the end)
a0d0e21e 129 | Alternation
130 () Grouping
131 [] Character class
132
14218588 133By default, the "^" character is guaranteed to match only the
134beginning of the string, the "$" character only the end (or before the
135newline at the end), and Perl does certain optimizations with the
a0d0e21e 136assumption that the string contains only one line. Embedded newlines
137will not be matched by "^" or "$". You may, however, wish to treat a
4a6725af 138string as a multi-line buffer, such that the "^" will match after any
0d520e8e 139newline within the string (except if the newline is the last character in
140the string), and "$" will match before any newline. At the
a0d0e21e 141cost of a little more overhead, you can do this by using the /m modifier
142on the pattern match operator. (Older programs did this by setting C<$*>,
f02c194e 143but this practice has been removed in perl 5.9.)
d74e8afc 144X<^> X<$> X</m>
a0d0e21e 145
14218588 146To simplify multi-line substitutions, the "." character never matches a
55497cff 147newline unless you use the C</s> modifier, which in effect tells Perl to pretend
f02c194e 148the string is a single line--even if it isn't.
d74e8afc 149X<.> X</s>
a0d0e21e 150
04838cea 151=head3 Quantifiers
152
a0d0e21e 153The following standard quantifiers are recognized:
d74e8afc 154X<metacharacter> X<quantifier> X<*> X<+> X<?> X<{n}> X<{n,}> X<{n,m}>
a0d0e21e 155
156 * Match 0 or more times
157 + Match 1 or more times
158 ? Match 1 or 0 times
159 {n} Match exactly n times
160 {n,} Match at least n times
161 {n,m} Match at least n but not more than m times
162
163(If a curly bracket occurs in any other context, it is treated
b975c076 164as a regular character. In particular, the lower bound
527e91da 165is not optional.) The "*" quantifier is equivalent to C<{0,}>, the "+"
166quantifier to C<{1,}>, and the "?" quantifier to C<{0,1}>. n and m are limited
9c79236d 167to integral values less than a preset limit defined when perl is built.
168This is usually 32766 on the most common platforms. The actual limit can
169be seen in the error message generated by code such as this:
170
820475bd 171 $_ **= $_ , / {$_} / for 2 .. 42;
a0d0e21e 172
54310121 173By default, a quantified subpattern is "greedy", that is, it will match as
174many times as possible (given a particular starting location) while still
175allowing the rest of the pattern to match. If you want it to match the
176minimum number of times possible, follow the quantifier with a "?". Note
177that the meanings don't change, just the "greediness":
0d017f4d 178X<metacharacter> X<greedy> X<greediness>
d74e8afc 179X<?> X<*?> X<+?> X<??> X<{n}?> X<{n,}?> X<{n,m}?>
a0d0e21e 180
0d017f4d 181 *? Match 0 or more times, not greedily
182 +? Match 1 or more times, not greedily
183 ?? Match 0 or 1 time, not greedily
184 {n}? Match exactly n times, not greedily
185 {n,}? Match at least n times, not greedily
186 {n,m}? Match at least n but not more than m times, not greedily
a0d0e21e 187
b9b4dddf 188By default, when a quantified subpattern does not allow the rest of the
189overall pattern to match, Perl will backtrack. However, this behaviour is
0d017f4d 190sometimes undesirable. Thus Perl provides the "possessive" quantifier form
b9b4dddf 191as well.
192
0d017f4d 193 *+ Match 0 or more times and give nothing back
194 ++ Match 1 or more times and give nothing back
195 ?+ Match 0 or 1 time and give nothing back
b9b4dddf 196 {n}+ Match exactly n times and give nothing back (redundant)
04838cea 197 {n,}+ Match at least n times and give nothing back
198 {n,m}+ Match at least n but not more than m times and give nothing back
b9b4dddf 199
200For instance,
201
202 'aaaa' =~ /a++a/
203
204will never match, as the C<a++> will gobble up all the C<a>'s in the
205string and won't leave any for the remaining part of the pattern. This
206feature can be extremely useful to give perl hints about where it
207shouldn't backtrack. For instance, the typical "match a double-quoted
208string" problem can be most efficiently performed when written as:
209
210 /"(?:[^"\\]++|\\.)*+"/
211
0d017f4d 212as we know that if the final quote does not match, backtracking will not
b9b4dddf 213help. See the independent subexpression C<< (?>...) >> for more details;
214possessive quantifiers are just syntactic sugar for that construct. For
215instance the above example could also be written as follows:
216
217 /"(?>(?:(?>[^"\\]+)|\\.)*)"/
218
04838cea 219=head3 Escape sequences
220
5f05dabc 221Because patterns are processed as double quoted strings, the following
a0d0e21e 222also work:
0d017f4d 223X<\t> X<\n> X<\r> X<\f> X<\e> X<\a> X<\l> X<\u> X<\L> X<\U> X<\E> X<\Q>
d74e8afc 224X<\0> X<\c> X<\N> X<\x>
a0d0e21e 225
0f36ee90 226 \t tab (HT, TAB)
227 \n newline (LF, NL)
228 \r return (CR)
229 \f form feed (FF)
230 \a alarm (bell) (BEL)
231 \e escape (think troff) (ESC)
0d017f4d 232 \033 octal char (example: ESC)
233 \x1B hex char (example: ESC)
196ac2fc 234 \x{263a} long hex char (example: Unicode SMILEY)
0d017f4d 235 \cK control char (example: VT)
196ac2fc 236 \N{name} named Unicode character
e526e8bb 237 \N{U+263D} Unicode character (example: FIRST QUARTER MOON)
cb1a09d0 238 \l lowercase next char (think vi)
239 \u uppercase next char (think vi)
240 \L lowercase till \E (think vi)
241 \U uppercase till \E (think vi)
242 \E end case modification (think vi)
5a964f20 243 \Q quote (disable) pattern metacharacters till \E
a0d0e21e 244
a034a98d 245If C<use locale> is in effect, the case map used by C<\l>, C<\L>, C<\u>
423cee85 246and C<\U> is taken from the current locale. See L<perllocale>. For
4a2d328f 247documentation of C<\N{name}>, see L<charnames>.
a034a98d 248
1d2dff63 249You cannot include a literal C<$> or C<@> within a C<\Q> sequence.
250An unescaped C<$> or C<@> interpolates the corresponding variable,
251while escaping will cause the literal string C<\$> to be matched.
252You'll need to write something like C<m/\Quser\E\@\Qhost/>.
253
e1d1eefb 254=head3 Character Classes and other Special Escapes
04838cea 255
a0d0e21e 256In addition, Perl defines the following:
d74e8afc 257X<\w> X<\W> X<\s> X<\S> X<\d> X<\D> X<\X> X<\p> X<\P> X<\C>
f7819f85 258X<\g> X<\k> X<\N> X<\K> X<\v> X<\V> X<\h> X<\H>
0d017f4d 259X<word> X<whitespace> X<character class> X<backreference>
a0d0e21e 260
81714fb9 261 \w Match a "word" character (alphanumeric plus "_")
262 \W Match a non-"word" character
263 \s Match a whitespace character
264 \S Match a non-whitespace character
265 \d Match a digit character
266 \D Match a non-digit character
267 \pP Match P, named property. Use \p{Prop} for longer names.
268 \PP Match non-P
0111a78f 269 \X Match Unicode "eXtended grapheme cluster"
81714fb9 270 \C Match a single C char (octet) even under Unicode.
271 NOTE: breaks up characters into their UTF-8 bytes,
272 so you may end up with malformed pieces of UTF-8.
273 Unsupported in lookbehind.
5d458dd8 274 \1 Backreference to a specific group.
c74340f9 275 '1' may actually be any positive integer.
2bf803e2 276 \g1 Backreference to a specific or previous group,
277 \g{-1} number may be negative indicating a previous buffer and may
278 optionally be wrapped in curly brackets for safer parsing.
1f1031fe 279 \g{name} Named backreference
81714fb9 280 \k<name> Named backreference
ee9b8eae 281 \K Keep the stuff left of the \K, don't include it in $&
b3b85878 282 \N Any character but \n (experimental)
e1d1eefb 283 \v Vertical whitespace
284 \V Not vertical whitespace
285 \h Horizontal whitespace
286 \H Not horizontal whitespace
2ddf2931 287 \R Linebreak
a0d0e21e 288
08ce8fc6 289A C<\w> matches a single alphanumeric character (an alphabetic
290character, or a decimal digit) or C<_>, not a whole word. Use C<\w+>
291to match a string of Perl-identifier characters (which isn't the same
292as matching an English word). If C<use locale> is in effect, the list
293of alphabetic characters generated by C<\w> is taken from the current
294locale. See L<perllocale>. You may use C<\w>, C<\W>, C<\s>, C<\S>,
0d017f4d 295C<\d>, and C<\D> within character classes, but they aren't usable
296as either end of a range. If any of them precedes or follows a "-",
297the "-" is understood literally. If Unicode is in effect, C<\s> matches
c62285ac 298also "\x{85}", "\x{2028}", and "\x{2029}". See L<perlunicode> for more
0d017f4d 299details about C<\pP>, C<\PP>, C<\X> and the possibility of defining
300your own C<\p> and C<\P> properties, and L<perluniintro> about Unicode
301in general.
d74e8afc 302X<\w> X<\W> X<word>
a0d0e21e 303
e1d1eefb 304C<\R> will atomically match a linebreak, including the network line-ending
e2cb52ee 305"\x0D\x0A". Specifically, X<\R> is exactly equivalent to
e1d1eefb 306
307 (?>\x0D\x0A?|[\x0A-\x0C\x85\x{2028}\x{2029}])
308
309B<Note:> C<\R> has no special meaning inside of a character class;
310use C<\v> instead (vertical whitespace).
311X<\R>
312
df225385 313Note that C<\N> has two meanings. When of the form C<\N{NAME}>, it matches the
e526e8bb 314character whose name is C<NAME>; and similarly when of the form
315C<\N{U+I<wide hex char>}>, it matches the character whose Unicode ordinal is
316I<wide hex char>. Otherwise it matches any character but C<\n>.
df225385 317
b8c5462f 318The POSIX character class syntax
d74e8afc 319X<character class>
b8c5462f 320
820475bd 321 [:class:]
b8c5462f 322
0d017f4d 323is also available. Note that the C<[> and C<]> brackets are I<literal>;
5496314a 324they must always be used within a character class expression.
325
326 # this is correct:
327 $string =~ /[[:alpha:]]/;
328
329 # this is not, and will generate a warning:
330 $string =~ /[:alpha:]/;
331
6fa80ea2 332The following table shows the mapping of POSIX character class
333names, common escapes, literal escape sequences and their equivalent
334Unicode style property names.
335X<character class> X<\p> X<\p{}>
d74e8afc 336X<alpha> X<alnum> X<ascii> X<blank> X<cntrl> X<digit> X<graph>
337X<lower> X<print> X<punct> X<space> X<upper> X<word> X<xdigit>
b8c5462f 338
6fa80ea2 339B<Note:> up to Perl 5.10 the property names used were shared with
340standard Unicode properties, this was changed in Perl 5.11, see
341L<perl5110delta> for details.
342
343 POSIX Esc Class Property Note
344 --------------------------------------------------------
345 alnum [0-9A-Za-z] IsPosixAlnum
346 alpha [A-Za-z] IsPosixAlpha
347 ascii [\000-\177] IsASCII
348 blank [\011 ] IsPosixBlank [1]
349 cntrl [\0-\37\177] IsPosixCntrl
350 digit \d [0-9] IsPosixDigit
351 graph [!-~] IsPosixGraph
352 lower [a-z] IsPosixLower
353 print [ -~] IsPosixPrint
354 punct [!-/:-@[-`{-~] IsPosixPunct
355 space [\11-\15 ] IsPosixSpace [2]
356 \s [\11\12\14\15 ] IsPerlSpace [2]
357 upper [A-Z] IsPosixUpper
358 word \w [0-9A-Z_a-z] IsPerlWord [3]
359 xdigit [0-9A-Fa-f] IsXDigit
b8c5462f 360
07698885 361=over
362
363=item [1]
364
b432a672 365A GNU extension equivalent to C<[ \t]>, "all horizontal whitespace".
07698885 366
367=item [2]
368
6fa80ea2 369Note that C<\s> and C<[[:space:]]> are B<not> equivalent as C<[[:space:]]>
370includes also the (very rare) "vertical tabulator", "\cK" or chr(11) in
371ASCII.
07698885 372
373=item [3]
374
08ce8fc6 375A Perl extension, see above.
07698885 376
377=back
aaa51d5e 378
26b44a0a 379For example use C<[:upper:]> to match all the uppercase characters.
aaa51d5e 380Note that the C<[]> are part of the C<[::]> construct, not part of the
381whole character class. For example:
b8c5462f 382
820475bd 383 [01[:alpha:]%]
b8c5462f 384
0d017f4d 385matches zero, one, any alphabetic character, and the percent sign.
b8c5462f 386
353c6505 387The other named classes are:
b8c5462f 388
389=over 4
390
391=item cntrl
d74e8afc 392X<cntrl>
b8c5462f 393
820475bd 394Any control character. Usually characters that don't produce output as
395such but instead control the terminal somehow: for example newline and
396backspace are control characters. All characters with ord() less than
0d017f4d 39732 are usually classified as control characters (assuming ASCII,
7be5a6cf 398the ISO Latin character sets, and Unicode), as is the character with
399the ord() value of 127 (C<DEL>).
b8c5462f 400
401=item graph
d74e8afc 402X<graph>
b8c5462f 403
f1cbbd6e 404Any alphanumeric or punctuation (special) character.
b8c5462f 405
406=item print
d74e8afc 407X<print>
b8c5462f 408
f79b3095 409Any alphanumeric or punctuation (special) character or the space character.
b8c5462f 410
411=item punct
d74e8afc 412X<punct>
b8c5462f 413
f1cbbd6e 414Any punctuation (special) character.
b8c5462f 415
416=item xdigit
d74e8afc 417X<xdigit>
b8c5462f 418
593df60c 419Any hexadecimal digit. Though this may feel silly ([0-9A-Fa-f] would
820475bd 420work just fine) it is included for completeness.
b8c5462f 421
b8c5462f 422=back
423
424You can negate the [::] character classes by prefixing the class name
425with a '^'. This is a Perl extension. For example:
d74e8afc 426X<character class, negation>
b8c5462f 427
5496314a 428 POSIX traditional Unicode
93733859 429
6fa80ea2 430 [[:^digit:]] \D \P{IsPosixDigit}
431 [[:^space:]] \S \P{IsPosixSpace}
432 [[:^word:]] \W \P{IsPerlWord}
b8c5462f 433
54c18d04 434Perl respects the POSIX standard in that POSIX character classes are
435only supported within a character class. The POSIX character classes
436[.cc.] and [=cc=] are recognized but B<not> supported and trying to
437use them will cause an error.
b8c5462f 438
04838cea 439=head3 Assertions
440
a0d0e21e 441Perl defines the following zero-width assertions:
d74e8afc 442X<zero-width assertion> X<assertion> X<regex, zero-width assertion>
443X<regexp, zero-width assertion>
444X<regular expression, zero-width assertion>
445X<\b> X<\B> X<\A> X<\Z> X<\z> X<\G>
a0d0e21e 446
447 \b Match a word boundary
0d017f4d 448 \B Match except at a word boundary
b85d18e9 449 \A Match only at beginning of string
450 \Z Match only at end of string, or before newline at the end
451 \z Match only at end of string
9da458fc 452 \G Match only at pos() (e.g. at the end-of-match position
453 of prior m//g)
a0d0e21e 454
14218588 455A word boundary (C<\b>) is a spot between two characters
19799a22 456that has a C<\w> on one side of it and a C<\W> on the other side
457of it (in either order), counting the imaginary characters off the
458beginning and end of the string as matching a C<\W>. (Within
459character classes C<\b> represents backspace rather than a word
460boundary, just as it normally does in any double-quoted string.)
461The C<\A> and C<\Z> are just like "^" and "$", except that they
462won't match multiple times when the C</m> modifier is used, while
463"^" and "$" will match at every internal line boundary. To match
464the actual end of the string and not ignore an optional trailing
465newline, use C<\z>.
d74e8afc 466X<\b> X<\A> X<\Z> X<\z> X</m>
19799a22 467
468The C<\G> assertion can be used to chain global matches (using
469C<m//g>), as described in L<perlop/"Regexp Quote-Like Operators">.
470It is also useful when writing C<lex>-like scanners, when you have
471several patterns that you want to match against consequent substrings
472of your string, see the previous reference. The actual location
473where C<\G> will match can also be influenced by using C<pos()> as
58e23c8d 474an lvalue: see L<perlfunc/pos>. Note that the rule for zero-length
475matches is modified somewhat, in that contents to the left of C<\G> is
476not counted when determining the length of the match. Thus the following
477will not match forever:
d74e8afc 478X<\G>
c47ff5f1 479
58e23c8d 480 $str = 'ABC';
481 pos($str) = 1;
482 while (/.\G/g) {
483 print $&;
484 }
485
486It will print 'A' and then terminate, as it considers the match to
487be zero-width, and thus will not match at the same position twice in a
488row.
489
490It is worth noting that C<\G> improperly used can result in an infinite
491loop. Take care when using patterns that include C<\G> in an alternation.
492
04838cea 493=head3 Capture buffers
494
0d017f4d 495The bracketing construct C<( ... )> creates capture buffers. To refer
496to the current contents of a buffer later on, within the same pattern,
497use \1 for the first, \2 for the second, and so on.
498Outside the match use "$" instead of "\". (The
81714fb9 499\<digit> notation works in certain circumstances outside
14218588 500the match. See the warning below about \1 vs $1 for details.)
501Referring back to another part of the match is called a
502I<backreference>.
d74e8afc 503X<regex, capture buffer> X<regexp, capture buffer>
504X<regular expression, capture buffer> X<backreference>
14218588 505
506There is no limit to the number of captured substrings that you may
507use. However Perl also uses \10, \11, etc. as aliases for \010,
fb55449c 508\011, etc. (Recall that 0 means octal, so \011 is the character at
509number 9 in your coded character set; which would be the 10th character,
81714fb9 510a horizontal tab under ASCII.) Perl resolves this
511ambiguity by interpreting \10 as a backreference only if at least 10
512left parentheses have opened before it. Likewise \11 is a
513backreference only if at least 11 left parentheses have opened
514before it. And so on. \1 through \9 are always interpreted as
5624f11d 515backreferences.
40863337 516If the bracketing group did not match, the associated backreference won't
517match either. (This can happen if the bracketing group is optional, or
518in a different branch of an alternation.)
519
1f1031fe 520X<\g{1}> X<\g{-1}> X<\g{name}> X<relative backreference> X<named backreference>
2bf803e2 521In order to provide a safer and easier way to construct patterns using
99d59c4d 522backreferences, Perl provides the C<\g{N}> notation (starting with perl
5235.10.0). The curly brackets are optional, however omitting them is less
524safe as the meaning of the pattern can be changed by text (such as digits)
525following it. When N is a positive integer the C<\g{N}> notation is
526exactly equivalent to using normal backreferences. When N is a negative
527integer then it is a relative backreference referring to the previous N'th
528capturing group. When the bracket form is used and N is not an integer, it
529is treated as a reference to a named buffer.
2bf803e2 530
531Thus C<\g{-1}> refers to the last buffer, C<\g{-2}> refers to the
532buffer before that. For example:
5624f11d 533
534 /
535 (Y) # buffer 1
536 ( # buffer 2
537 (X) # buffer 3
2bf803e2 538 \g{-1} # backref to buffer 3
539 \g{-3} # backref to buffer 1
5624f11d 540 )
541 /x
542
2bf803e2 543and would match the same as C</(Y) ( (X) \3 \1 )/x>.
14218588 544
99d59c4d 545Additionally, as of Perl 5.10.0 you may use named capture buffers and named
1f1031fe 546backreferences. The notation is C<< (?<name>...) >> to declare and C<< \k<name> >>
0d017f4d 547to reference. You may also use apostrophes instead of angle brackets to delimit the
548name; and you may use the bracketed C<< \g{name} >> backreference syntax.
549It's possible to refer to a named capture buffer by absolute and relative number as well.
550Outside the pattern, a named capture buffer is available via the C<%+> hash.
551When different buffers within the same pattern have the same name, C<$+{name}>
552and C<< \k<name> >> refer to the leftmost defined group. (Thus it's possible
553to do things with named capture buffers that would otherwise require C<(??{})>
554code to accomplish.)
555X<named capture buffer> X<regular expression, named capture buffer>
64c5a566 556X<%+> X<$+{name}> X<< \k<name> >>
81714fb9 557
14218588 558Examples:
a0d0e21e 559
560 s/^([^ ]*) *([^ ]*)/$2 $1/; # swap first two words
561
81714fb9 562 /(.)\1/ # find first doubled char
563 and print "'$1' is the first doubled character\n";
564
565 /(?<char>.)\k<char>/ # ... a different way
566 and print "'$+{char}' is the first doubled character\n";
567
0d017f4d 568 /(?'char'.)\1/ # ... mix and match
81714fb9 569 and print "'$1' is the first doubled character\n";
c47ff5f1 570
14218588 571 if (/Time: (..):(..):(..)/) { # parse out values
a0d0e21e 572 $hours = $1;
573 $minutes = $2;
574 $seconds = $3;
575 }
c47ff5f1 576
14218588 577Several special variables also refer back to portions of the previous
578match. C<$+> returns whatever the last bracket match matched.
579C<$&> returns the entire matched string. (At one point C<$0> did
580also, but now it returns the name of the program.) C<$`> returns
77ea4f6d 581everything before the matched string. C<$'> returns everything
582after the matched string. And C<$^N> contains whatever was matched by
583the most-recently closed group (submatch). C<$^N> can be used in
584extended patterns (see below), for example to assign a submatch to a
81714fb9 585variable.
d74e8afc 586X<$+> X<$^N> X<$&> X<$`> X<$'>
14218588 587
665e98b9 588The numbered match variables ($1, $2, $3, etc.) and the related punctuation
77ea4f6d 589set (C<$+>, C<$&>, C<$`>, C<$'>, and C<$^N>) are all dynamically scoped
14218588 590until the end of the enclosing block or until the next successful
591match, whichever comes first. (See L<perlsyn/"Compound Statements">.)
d74e8afc 592X<$+> X<$^N> X<$&> X<$`> X<$'>
593X<$1> X<$2> X<$3> X<$4> X<$5> X<$6> X<$7> X<$8> X<$9>
594
14218588 595
0d017f4d 596B<NOTE>: Failed matches in Perl do not reset the match variables,
5146ce24 597which makes it easier to write code that tests for a series of more
665e98b9 598specific cases and remembers the best match.
599
14218588 600B<WARNING>: Once Perl sees that you need one of C<$&>, C<$`>, or
601C<$'> anywhere in the program, it has to provide them for every
602pattern match. This may substantially slow your program. Perl
603uses the same mechanism to produce $1, $2, etc, so you also pay a
604price for each pattern that contains capturing parentheses. (To
605avoid this cost while retaining the grouping behaviour, use the
606extended regular expression C<(?: ... )> instead.) But if you never
607use C<$&>, C<$`> or C<$'>, then patterns I<without> capturing
608parentheses will not be penalized. So avoid C<$&>, C<$'>, and C<$`>
609if you can, but if you can't (and some algorithms really appreciate
610them), once you've used them once, use them at will, because you've
611already paid the price. As of 5.005, C<$&> is not so costly as the
612other two.
d74e8afc 613X<$&> X<$`> X<$'>
68dc0745 614
99d59c4d 615As a workaround for this problem, Perl 5.10.0 introduces C<${^PREMATCH}>,
cde0cee5 616C<${^MATCH}> and C<${^POSTMATCH}>, which are equivalent to C<$`>, C<$&>
617and C<$'>, B<except> that they are only guaranteed to be defined after a
87e95b7f 618successful match that was executed with the C</p> (preserve) modifier.
cde0cee5 619The use of these variables incurs no global performance penalty, unlike
620their punctuation char equivalents, however at the trade-off that you
621have to tell perl when you want to use them.
87e95b7f 622X</p> X<p modifier>
cde0cee5 623
19799a22 624Backslashed metacharacters in Perl are alphanumeric, such as C<\b>,
625C<\w>, C<\n>. Unlike some other regular expression languages, there
626are no backslashed symbols that aren't alphanumeric. So anything
c47ff5f1 627that looks like \\, \(, \), \<, \>, \{, or \} is always
19799a22 628interpreted as a literal character, not a metacharacter. This was
629once used in a common idiom to disable or quote the special meanings
630of regular expression metacharacters in a string that you want to
36bbe248 631use for a pattern. Simply quote all non-"word" characters:
a0d0e21e 632
633 $pattern =~ s/(\W)/\\$1/g;
634
f1cbbd6e 635(If C<use locale> is set, then this depends on the current locale.)
14218588 636Today it is more common to use the quotemeta() function or the C<\Q>
637metaquoting escape sequence to disable all metacharacters' special
638meanings like this:
a0d0e21e 639
640 /$unquoted\Q$quoted\E$unquoted/
641
9da458fc 642Beware that if you put literal backslashes (those not inside
643interpolated variables) between C<\Q> and C<\E>, double-quotish
644backslash interpolation may lead to confusing results. If you
645I<need> to use literal backslashes within C<\Q...\E>,
646consult L<perlop/"Gory details of parsing quoted constructs">.
647
19799a22 648=head2 Extended Patterns
649
14218588 650Perl also defines a consistent extension syntax for features not
651found in standard tools like B<awk> and B<lex>. The syntax is a
652pair of parentheses with a question mark as the first thing within
653the parentheses. The character after the question mark indicates
654the extension.
19799a22 655
14218588 656The stability of these extensions varies widely. Some have been
657part of the core language for many years. Others are experimental
658and may change without warning or be completely removed. Check
659the documentation on an individual feature to verify its current
660status.
19799a22 661
14218588 662A question mark was chosen for this and for the minimal-matching
663construct because 1) question marks are rare in older regular
664expressions, and 2) whenever you see one, you should stop and
665"question" exactly what is going on. That's psychology...
a0d0e21e 666
667=over 10
668
cc6b7395 669=item C<(?#text)>
d74e8afc 670X<(?#)>
a0d0e21e 671
14218588 672A comment. The text is ignored. If the C</x> modifier enables
19799a22 673whitespace formatting, a simple C<#> will suffice. Note that Perl closes
259138e3 674the comment as soon as it sees a C<)>, so there is no way to put a literal
675C<)> in the comment.
a0d0e21e 676
f7819f85 677=item C<(?pimsx-imsx)>
d74e8afc 678X<(?)>
19799a22 679
0b6d1084 680One or more embedded pattern-match modifiers, to be turned on (or
681turned off, if preceded by C<->) for the remainder of the pattern or
682the remainder of the enclosing pattern group (if any). This is
683particularly useful for dynamic patterns, such as those read in from a
0d017f4d 684configuration file, taken from an argument, or specified in a table
685somewhere. Consider the case where some patterns want to be case
686sensitive and some do not: The case insensitive ones merely need to
687include C<(?i)> at the front of the pattern. For example:
19799a22 688
689 $pattern = "foobar";
5d458dd8 690 if ( /$pattern/i ) { }
19799a22 691
692 # more flexible:
693
694 $pattern = "(?i)foobar";
5d458dd8 695 if ( /$pattern/ ) { }
19799a22 696
0b6d1084 697These modifiers are restored at the end of the enclosing group. For example,
19799a22 698
699 ( (?i) blah ) \s+ \1
700
0d017f4d 701will match C<blah> in any case, some spaces, and an exact (I<including the case>!)
702repetition of the previous word, assuming the C</x> modifier, and no C</i>
703modifier outside this group.
19799a22 704
8eb5594e 705These modifiers do not carry over into named subpatterns called in the
706enclosing group. In other words, a pattern such as C<((?i)(&NAME))> does not
707change the case-sensitivity of the "NAME" pattern.
708
5530442b 709Note that the C<p> modifier is special in that it can only be enabled,
cde0cee5 710not disabled, and that its presence anywhere in a pattern has a global
5530442b 711effect. Thus C<(?-p)> and C<(?-p:...)> are meaningless and will warn
cde0cee5 712when executed under C<use warnings>.
713
5a964f20 714=item C<(?:pattern)>
d74e8afc 715X<(?:)>
a0d0e21e 716
ca9dfc88 717=item C<(?imsx-imsx:pattern)>
718
5a964f20 719This is for clustering, not capturing; it groups subexpressions like
720"()", but doesn't make backreferences as "()" does. So
a0d0e21e 721
5a964f20 722 @fields = split(/\b(?:a|b|c)\b/)
a0d0e21e 723
724is like
725
5a964f20 726 @fields = split(/\b(a|b|c)\b/)
a0d0e21e 727
19799a22 728but doesn't spit out extra fields. It's also cheaper not to capture
729characters if you don't need to.
a0d0e21e 730
19799a22 731Any letters between C<?> and C<:> act as flags modifiers as with
5d458dd8 732C<(?imsx-imsx)>. For example,
ca9dfc88 733
734 /(?s-i:more.*than).*million/i
735
14218588 736is equivalent to the more verbose
ca9dfc88 737
738 /(?:(?s-i)more.*than).*million/i
739
594d7033 740=item C<(?|pattern)>
741X<(?|)> X<Branch reset>
742
743This is the "branch reset" pattern, which has the special property
744that the capture buffers are numbered from the same starting point
99d59c4d 745in each alternation branch. It is available starting from perl 5.10.0.
4deaaa80 746
693596a8 747Capture buffers are numbered from left to right, but inside this
748construct the numbering is restarted for each branch.
4deaaa80 749
750The numbering within each branch will be as normal, and any buffers
751following this construct will be numbered as though the construct
752contained only one branch, that being the one with the most capture
753buffers in it.
754
755This construct will be useful when you want to capture one of a
756number of alternative matches.
757
758Consider the following pattern. The numbers underneath show in
759which buffer the captured content will be stored.
594d7033 760
761
762 # before ---------------branch-reset----------- after
763 / ( a ) (?| x ( y ) z | (p (q) r) | (t) u (v) ) ( z ) /x
764 # 1 2 2 3 2 3 4
765
ab106183 766Be careful when using the branch reset pattern in combination with
767named captures. Named captures are implemented as being aliases to
768numbered buffers holding the captures, and that interferes with the
769implementation of the branch reset pattern. If you are using named
770captures in a branch reset pattern, it's best to use the same names,
771in the same order, in each of the alternations:
772
773 /(?| (?<a> x ) (?<b> y )
774 | (?<a> z ) (?<b> w )) /x
775
776Not doing so may lead to surprises:
777
778 "12" =~ /(?| (?<a> \d+ ) | (?<b> \D+))/x;
779 say $+ {a}; # Prints '12'
780 say $+ {b}; # *Also* prints '12'.
781
782The problem here is that both the buffer named C<< a >> and the buffer
783named C<< b >> are aliases for the buffer belonging to C<< $1 >>.
90a18110 784
ee9b8eae 785=item Look-Around Assertions
786X<look-around assertion> X<lookaround assertion> X<look-around> X<lookaround>
787
788Look-around assertions are zero width patterns which match a specific
789pattern without including it in C<$&>. Positive assertions match when
790their subpattern matches, negative assertions match when their subpattern
791fails. Look-behind matches text up to the current match position,
792look-ahead matches text following the current match position.
793
794=over 4
795
5a964f20 796=item C<(?=pattern)>
d74e8afc 797X<(?=)> X<look-ahead, positive> X<lookahead, positive>
a0d0e21e 798
19799a22 799A zero-width positive look-ahead assertion. For example, C</\w+(?=\t)/>
a0d0e21e 800matches a word followed by a tab, without including the tab in C<$&>.
801
5a964f20 802=item C<(?!pattern)>
d74e8afc 803X<(?!)> X<look-ahead, negative> X<lookahead, negative>
a0d0e21e 804
19799a22 805A zero-width negative look-ahead assertion. For example C</foo(?!bar)/>
a0d0e21e 806matches any occurrence of "foo" that isn't followed by "bar". Note
19799a22 807however that look-ahead and look-behind are NOT the same thing. You cannot
808use this for look-behind.
7b8d334a 809
5a964f20 810If you are looking for a "bar" that isn't preceded by a "foo", C</(?!foo)bar/>
7b8d334a 811will not do what you want. That's because the C<(?!foo)> is just saying that
812the next thing cannot be "foo"--and it's not, it's a "bar", so "foobar" will
813match. You would have to do something like C</(?!foo)...bar/> for that. We
814say "like" because there's the case of your "bar" not having three characters
815before it. You could cover that this way: C</(?:(?!foo)...|^.{0,2})bar/>.
816Sometimes it's still easier just to say:
a0d0e21e 817
a3cb178b 818 if (/bar/ && $` !~ /foo$/)
a0d0e21e 819
19799a22 820For look-behind see below.
c277df42 821
ee9b8eae 822=item C<(?<=pattern)> C<\K>
823X<(?<=)> X<look-behind, positive> X<lookbehind, positive> X<\K>
c277df42 824
c47ff5f1 825A zero-width positive look-behind assertion. For example, C</(?<=\t)\w+/>
19799a22 826matches a word that follows a tab, without including the tab in C<$&>.
827Works only for fixed-width look-behind.
c277df42 828
ee9b8eae 829There is a special form of this construct, called C<\K>, which causes the
830regex engine to "keep" everything it had matched prior to the C<\K> and
831not include it in C<$&>. This effectively provides variable length
832look-behind. The use of C<\K> inside of another look-around assertion
833is allowed, but the behaviour is currently not well defined.
834
c62285ac 835For various reasons C<\K> may be significantly more efficient than the
ee9b8eae 836equivalent C<< (?<=...) >> construct, and it is especially useful in
837situations where you want to efficiently remove something following
838something else in a string. For instance
839
840 s/(foo)bar/$1/g;
841
842can be rewritten as the much more efficient
843
844 s/foo\Kbar//g;
845
5a964f20 846=item C<(?<!pattern)>
d74e8afc 847X<(?<!)> X<look-behind, negative> X<lookbehind, negative>
c277df42 848
19799a22 849A zero-width negative look-behind assertion. For example C</(?<!bar)foo/>
850matches any occurrence of "foo" that does not follow "bar". Works
851only for fixed-width look-behind.
c277df42 852
ee9b8eae 853=back
854
81714fb9 855=item C<(?'NAME'pattern)>
856
857=item C<< (?<NAME>pattern) >>
858X<< (?<NAME>) >> X<(?'NAME')> X<named capture> X<capture>
859
860A named capture buffer. Identical in every respect to normal capturing
90a18110 861parentheses C<()> but for the additional fact that C<%+> or C<%-> may be
862used after a successful match to refer to a named buffer. See C<perlvar>
863for more details on the C<%+> and C<%-> hashes.
81714fb9 864
865If multiple distinct capture buffers have the same name then the
866$+{NAME} will refer to the leftmost defined buffer in the match.
867
0d017f4d 868The forms C<(?'NAME'pattern)> and C<< (?<NAME>pattern) >> are equivalent.
81714fb9 869
870B<NOTE:> While the notation of this construct is the same as the similar
0d017f4d 871function in .NET regexes, the behavior is not. In Perl the buffers are
81714fb9 872numbered sequentially regardless of being named or not. Thus in the
873pattern
874
875 /(x)(?<foo>y)(z)/
876
877$+{foo} will be the same as $2, and $3 will contain 'z' instead of
878the opposite which is what a .NET regex hacker might expect.
879
1f1031fe 880Currently NAME is restricted to simple identifiers only.
881In other words, it must match C</^[_A-Za-z][_A-Za-z0-9]*\z/> or
882its Unicode extension (see L<utf8>),
883though it isn't extended by the locale (see L<perllocale>).
81714fb9 884
1f1031fe 885B<NOTE:> In order to make things easier for programmers with experience
ae5648b3 886with the Python or PCRE regex engines, the pattern C<< (?PE<lt>NAMEE<gt>pattern) >>
0d017f4d 887may be used instead of C<< (?<NAME>pattern) >>; however this form does not
64c5a566 888support the use of single quotes as a delimiter for the name.
81714fb9 889
1f1031fe 890=item C<< \k<NAME> >>
891
892=item C<< \k'NAME' >>
81714fb9 893
894Named backreference. Similar to numeric backreferences, except that
895the group is designated by name and not number. If multiple groups
896have the same name then it refers to the leftmost defined group in
897the current match.
898
0d017f4d 899It is an error to refer to a name not defined by a C<< (?<NAME>) >>
81714fb9 900earlier in the pattern.
901
902Both forms are equivalent.
903
1f1031fe 904B<NOTE:> In order to make things easier for programmers with experience
0d017f4d 905with the Python or PCRE regex engines, the pattern C<< (?P=NAME) >>
64c5a566 906may be used instead of C<< \k<NAME> >>.
1f1031fe 907
cc6b7395 908=item C<(?{ code })>
d74e8afc 909X<(?{})> X<regex, code in> X<regexp, code in> X<regular expression, code in>
c277df42 910
19799a22 911B<WARNING>: This extended regular expression feature is considered
b9b4dddf 912experimental, and may be changed without notice. Code executed that
913has side effects may not perform identically from version to version
914due to the effect of future optimisations in the regex engine.
c277df42 915
cc46d5f2 916This zero-width assertion evaluates any embedded Perl code. It
19799a22 917always succeeds, and its C<code> is not interpolated. Currently,
918the rules to determine where the C<code> ends are somewhat convoluted.
919
77ea4f6d 920This feature can be used together with the special variable C<$^N> to
921capture the results of submatches in variables without having to keep
922track of the number of nested parentheses. For example:
923
924 $_ = "The brown fox jumps over the lazy dog";
925 /the (\S+)(?{ $color = $^N }) (\S+)(?{ $animal = $^N })/i;
926 print "color = $color, animal = $animal\n";
927
754091cb 928Inside the C<(?{...})> block, C<$_> refers to the string the regular
929expression is matching against. You can also use C<pos()> to know what is
fa11829f 930the current position of matching within this string.
754091cb 931
19799a22 932The C<code> is properly scoped in the following sense: If the assertion
933is backtracked (compare L<"Backtracking">), all changes introduced after
934C<local>ization are undone, so that
b9ac3b5b 935
936 $_ = 'a' x 8;
5d458dd8 937 m<
b9ac3b5b 938 (?{ $cnt = 0 }) # Initialize $cnt.
939 (
5d458dd8 940 a
b9ac3b5b 941 (?{
942 local $cnt = $cnt + 1; # Update $cnt, backtracking-safe.
943 })
5d458dd8 944 )*
b9ac3b5b 945 aaaa
946 (?{ $res = $cnt }) # On success copy to non-localized
947 # location.
948 >x;
949
0d017f4d 950will set C<$res = 4>. Note that after the match, C<$cnt> returns to the globally
14218588 951introduced value, because the scopes that restrict C<local> operators
b9ac3b5b 952are unwound.
953
19799a22 954This assertion may be used as a C<(?(condition)yes-pattern|no-pattern)>
955switch. If I<not> used in this way, the result of evaluation of
956C<code> is put into the special variable C<$^R>. This happens
957immediately, so C<$^R> can be used from other C<(?{ code })> assertions
958inside the same regular expression.
b9ac3b5b 959
19799a22 960The assignment to C<$^R> above is properly localized, so the old
961value of C<$^R> is restored if the assertion is backtracked; compare
962L<"Backtracking">.
b9ac3b5b 963
19799a22 964For reasons of security, this construct is forbidden if the regular
965expression involves run-time interpolation of variables, unless the
966perilous C<use re 'eval'> pragma has been used (see L<re>), or the
967variables contain results of C<qr//> operator (see
5d458dd8 968L<perlop/"qr/STRING/imosx">).
871b0233 969
0d017f4d 970This restriction is due to the wide-spread and remarkably convenient
19799a22 971custom of using run-time determined strings as patterns. For example:
871b0233 972
973 $re = <>;
974 chomp $re;
975 $string =~ /$re/;
976
14218588 977Before Perl knew how to execute interpolated code within a pattern,
978this operation was completely safe from a security point of view,
979although it could raise an exception from an illegal pattern. If
980you turn on the C<use re 'eval'>, though, it is no longer secure,
981so you should only do so if you are also using taint checking.
982Better yet, use the carefully constrained evaluation within a Safe
cc46d5f2 983compartment. See L<perlsec> for details about both these mechanisms.
871b0233 984
e95d7314 985B<WARNING>: Use of lexical (C<my>) variables in these blocks is
986broken. The result is unpredictable and will make perl unstable. The
987workaround is to use global (C<our>) variables.
988
989B<WARNING>: Because Perl's regex engine is currently not re-entrant,
990interpolated code may not invoke the regex engine either directly with
991C<m//> or C<s///>), or indirectly with functions such as
992C<split>. Invoking the regex engine in these blocks will make perl
993unstable.
8988a1bb 994
14455d6c 995=item C<(??{ code })>
d74e8afc 996X<(??{})>
997X<regex, postponed> X<regexp, postponed> X<regular expression, postponed>
0f5d15d6 998
19799a22 999B<WARNING>: This extended regular expression feature is considered
b9b4dddf 1000experimental, and may be changed without notice. Code executed that
1001has side effects may not perform identically from version to version
1002due to the effect of future optimisations in the regex engine.
0f5d15d6 1003
19799a22 1004This is a "postponed" regular subexpression. The C<code> is evaluated
1005at run time, at the moment this subexpression may match. The result
1006of evaluation is considered as a regular expression and matched as
61528107 1007if it were inserted instead of this construct. Note that this means
6bda09f9 1008that the contents of capture buffers defined inside an eval'ed pattern
1009are not available outside of the pattern, and vice versa, there is no
1010way for the inner pattern to refer to a capture buffer defined outside.
1011Thus,
1012
1013 ('a' x 100)=~/(??{'(.)' x 100})/
1014
81714fb9 1015B<will> match, it will B<not> set $1.
0f5d15d6 1016
428594d9 1017The C<code> is not interpolated. As before, the rules to determine
19799a22 1018where the C<code> ends are currently somewhat convoluted.
1019
1020The following pattern matches a parenthesized group:
0f5d15d6 1021
1022 $re = qr{
1023 \(
1024 (?:
1025 (?> [^()]+ ) # Non-parens without backtracking
1026 |
14455d6c 1027 (??{ $re }) # Group with matching parens
0f5d15d6 1028 )*
1029 \)
1030 }x;
1031
6bda09f9 1032See also C<(?PARNO)> for a different, more efficient way to accomplish
1033the same task.
1034
0b370c0a 1035For reasons of security, this construct is forbidden if the regular
1036expression involves run-time interpolation of variables, unless the
1037perilous C<use re 'eval'> pragma has been used (see L<re>), or the
1038variables contain results of C<qr//> operator (see
1039L<perlop/"qr/STRING/imosx">).
1040
5d458dd8 1041Because perl's regex engine is not currently re-entrant, delayed
8988a1bb 1042code may not invoke the regex engine either directly with C<m//> or C<s///>),
1043or indirectly with functions such as C<split>.
1044
5d458dd8 1045Recursing deeper than 50 times without consuming any input string will
1046result in a fatal error. The maximum depth is compiled into perl, so
6bda09f9 1047changing it requires a custom build.
1048
542fa716 1049=item C<(?PARNO)> C<(?-PARNO)> C<(?+PARNO)> C<(?R)> C<(?0)>
1050X<(?PARNO)> X<(?1)> X<(?R)> X<(?0)> X<(?-1)> X<(?+1)> X<(?-PARNO)> X<(?+PARNO)>
6bda09f9 1051X<regex, recursive> X<regexp, recursive> X<regular expression, recursive>
542fa716 1052X<regex, relative recursion>
6bda09f9 1053
81714fb9 1054Similar to C<(??{ code })> except it does not involve compiling any code,
1055instead it treats the contents of a capture buffer as an independent
61528107 1056pattern that must match at the current position. Capture buffers
81714fb9 1057contained by the pattern will have the value as determined by the
6bda09f9 1058outermost recursion.
1059
894be9b7 1060PARNO is a sequence of digits (not starting with 0) whose value reflects
1061the paren-number of the capture buffer to recurse to. C<(?R)> recurses to
1062the beginning of the whole pattern. C<(?0)> is an alternate syntax for
542fa716 1063C<(?R)>. If PARNO is preceded by a plus or minus sign then it is assumed
1064to be relative, with negative numbers indicating preceding capture buffers
1065and positive ones following. Thus C<(?-1)> refers to the most recently
1066declared buffer, and C<(?+1)> indicates the next buffer to be declared.
c74340f9 1067Note that the counting for relative recursion differs from that of
1068relative backreferences, in that with recursion unclosed buffers B<are>
1069included.
6bda09f9 1070
81714fb9 1071The following pattern matches a function foo() which may contain
f145b7e9 1072balanced parentheses as the argument.
6bda09f9 1073
1074 $re = qr{ ( # paren group 1 (full function)
81714fb9 1075 foo
6bda09f9 1076 ( # paren group 2 (parens)
1077 \(
1078 ( # paren group 3 (contents of parens)
1079 (?:
1080 (?> [^()]+ ) # Non-parens without backtracking
1081 |
1082 (?2) # Recurse to start of paren group 2
1083 )*
1084 )
1085 \)
1086 )
1087 )
1088 }x;
1089
1090If the pattern was used as follows
1091
1092 'foo(bar(baz)+baz(bop))'=~/$re/
1093 and print "\$1 = $1\n",
1094 "\$2 = $2\n",
1095 "\$3 = $3\n";
1096
1097the output produced should be the following:
1098
1099 $1 = foo(bar(baz)+baz(bop))
1100 $2 = (bar(baz)+baz(bop))
81714fb9 1101 $3 = bar(baz)+baz(bop)
6bda09f9 1102
81714fb9 1103If there is no corresponding capture buffer defined, then it is a
61528107 1104fatal error. Recursing deeper than 50 times without consuming any input
81714fb9 1105string will also result in a fatal error. The maximum depth is compiled
6bda09f9 1106into perl, so changing it requires a custom build.
1107
542fa716 1108The following shows how using negative indexing can make it
1109easier to embed recursive patterns inside of a C<qr//> construct
1110for later use:
1111
1112 my $parens = qr/(\((?:[^()]++|(?-1))*+\))/;
1113 if (/foo $parens \s+ + \s+ bar $parens/x) {
1114 # do something here...
1115 }
1116
81714fb9 1117B<Note> that this pattern does not behave the same way as the equivalent
0d017f4d 1118PCRE or Python construct of the same form. In Perl you can backtrack into
6bda09f9 1119a recursed group, in PCRE and Python the recursed into group is treated
542fa716 1120as atomic. Also, modifiers are resolved at compile time, so constructs
1121like (?i:(?1)) or (?:(?i)(?1)) do not affect how the sub-pattern will
1122be processed.
6bda09f9 1123
894be9b7 1124=item C<(?&NAME)>
1125X<(?&NAME)>
1126
0d017f4d 1127Recurse to a named subpattern. Identical to C<(?PARNO)> except that the
1128parenthesis to recurse to is determined by name. If multiple parentheses have
894be9b7 1129the same name, then it recurses to the leftmost.
1130
1131It is an error to refer to a name that is not declared somewhere in the
1132pattern.
1133
1f1031fe 1134B<NOTE:> In order to make things easier for programmers with experience
1135with the Python or PCRE regex engines the pattern C<< (?P>NAME) >>
64c5a566 1136may be used instead of C<< (?&NAME) >>.
1f1031fe 1137
e2e6a0f1 1138=item C<(?(condition)yes-pattern|no-pattern)>
1139X<(?()>
286f584a 1140
e2e6a0f1 1141=item C<(?(condition)yes-pattern)>
286f584a 1142
e2e6a0f1 1143Conditional expression. C<(condition)> should be either an integer in
1144parentheses (which is valid if the corresponding pair of parentheses
1145matched), a look-ahead/look-behind/evaluate zero-width assertion, a
1146name in angle brackets or single quotes (which is valid if a buffer
1147with the given name matched), or the special symbol (R) (true when
1148evaluated inside of recursion or eval). Additionally the R may be
1149followed by a number, (which will be true when evaluated when recursing
1150inside of the appropriate group), or by C<&NAME>, in which case it will
1151be true only when evaluated during recursion in the named group.
1152
1153Here's a summary of the possible predicates:
1154
1155=over 4
1156
1157=item (1) (2) ...
1158
1159Checks if the numbered capturing buffer has matched something.
1160
1161=item (<NAME>) ('NAME')
1162
1163Checks if a buffer with the given name has matched something.
1164
1165=item (?{ CODE })
1166
1167Treats the code block as the condition.
1168
1169=item (R)
1170
1171Checks if the expression has been evaluated inside of recursion.
1172
1173=item (R1) (R2) ...
1174
1175Checks if the expression has been evaluated while executing directly
1176inside of the n-th capture group. This check is the regex equivalent of
1177
1178 if ((caller(0))[3] eq 'subname') { ... }
1179
1180In other words, it does not check the full recursion stack.
1181
1182=item (R&NAME)
1183
1184Similar to C<(R1)>, this predicate checks to see if we're executing
1185directly inside of the leftmost group with a given name (this is the same
1186logic used by C<(?&NAME)> to disambiguate). It does not check the full
1187stack, but only the name of the innermost active recursion.
1188
1189=item (DEFINE)
1190
1191In this case, the yes-pattern is never directly executed, and no
1192no-pattern is allowed. Similar in spirit to C<(?{0})> but more efficient.
1193See below for details.
1194
1195=back
1196
1197For example:
1198
1199 m{ ( \( )?
1200 [^()]+
1201 (?(1) \) )
1202 }x
1203
1204matches a chunk of non-parentheses, possibly included in parentheses
1205themselves.
1206
1207A special form is the C<(DEFINE)> predicate, which never executes directly
1208its yes-pattern, and does not allow a no-pattern. This allows to define
1209subpatterns which will be executed only by using the recursion mechanism.
1210This way, you can define a set of regular expression rules that can be
1211bundled into any pattern you choose.
1212
1213It is recommended that for this usage you put the DEFINE block at the
1214end of the pattern, and that you name any subpatterns defined within it.
1215
1216Also, it's worth noting that patterns defined this way probably will
1217not be as efficient, as the optimiser is not very clever about
1218handling them.
1219
1220An example of how this might be used is as follows:
1221
2bf803e2 1222 /(?<NAME>(?&NAME_PAT))(?<ADDR>(?&ADDRESS_PAT))
e2e6a0f1 1223 (?(DEFINE)
2bf803e2 1224 (?<NAME_PAT>....)
1225 (?<ADRESS_PAT>....)
e2e6a0f1 1226 )/x
1227
1228Note that capture buffers matched inside of recursion are not accessible
0d017f4d 1229after the recursion returns, so the extra layer of capturing buffers is
e2e6a0f1 1230necessary. Thus C<$+{NAME_PAT}> would not be defined even though
1231C<$+{NAME}> would be.
286f584a 1232
c47ff5f1 1233=item C<< (?>pattern) >>
6bda09f9 1234X<backtrack> X<backtracking> X<atomic> X<possessive>
5a964f20 1235
19799a22 1236An "independent" subexpression, one which matches the substring
1237that a I<standalone> C<pattern> would match if anchored at the given
9da458fc 1238position, and it matches I<nothing other than this substring>. This
19799a22 1239construct is useful for optimizations of what would otherwise be
1240"eternal" matches, because it will not backtrack (see L<"Backtracking">).
9da458fc 1241It may also be useful in places where the "grab all you can, and do not
1242give anything back" semantic is desirable.
19799a22 1243
c47ff5f1 1244For example: C<< ^(?>a*)ab >> will never match, since C<< (?>a*) >>
19799a22 1245(anchored at the beginning of string, as above) will match I<all>
1246characters C<a> at the beginning of string, leaving no C<a> for
1247C<ab> to match. In contrast, C<a*ab> will match the same as C<a+b>,
1248since the match of the subgroup C<a*> is influenced by the following
1249group C<ab> (see L<"Backtracking">). In particular, C<a*> inside
1250C<a*ab> will match fewer characters than a standalone C<a*>, since
1251this makes the tail match.
1252
c47ff5f1 1253An effect similar to C<< (?>pattern) >> may be achieved by writing
19799a22 1254C<(?=(pattern))\1>. This matches the same substring as a standalone
1255C<a+>, and the following C<\1> eats the matched string; it therefore
c47ff5f1 1256makes a zero-length assertion into an analogue of C<< (?>...) >>.
19799a22 1257(The difference between these two constructs is that the second one
1258uses a capturing group, thus shifting ordinals of backreferences
1259in the rest of a regular expression.)
1260
1261Consider this pattern:
c277df42 1262
871b0233 1263 m{ \(
e2e6a0f1 1264 (
1265 [^()]+ # x+
1266 |
871b0233 1267 \( [^()]* \)
1268 )+
e2e6a0f1 1269 \)
871b0233 1270 }x
5a964f20 1271
19799a22 1272That will efficiently match a nonempty group with matching parentheses
1273two levels deep or less. However, if there is no such group, it
1274will take virtually forever on a long string. That's because there
1275are so many different ways to split a long string into several
1276substrings. This is what C<(.+)+> is doing, and C<(.+)+> is similar
1277to a subpattern of the above pattern. Consider how the pattern
1278above detects no-match on C<((()aaaaaaaaaaaaaaaaaa> in several
1279seconds, but that each extra letter doubles this time. This
1280exponential performance will make it appear that your program has
14218588 1281hung. However, a tiny change to this pattern
5a964f20 1282
e2e6a0f1 1283 m{ \(
1284 (
1285 (?> [^()]+ ) # change x+ above to (?> x+ )
1286 |
871b0233 1287 \( [^()]* \)
1288 )+
e2e6a0f1 1289 \)
871b0233 1290 }x
c277df42 1291
c47ff5f1 1292which uses C<< (?>...) >> matches exactly when the one above does (verifying
5a964f20 1293this yourself would be a productive exercise), but finishes in a fourth
1294the time when used on a similar string with 1000000 C<a>s. Be aware,
1295however, that this pattern currently triggers a warning message under
9f1b1f2d 1296the C<use warnings> pragma or B<-w> switch saying it
6bab786b 1297C<"matches null string many times in regex">.
c277df42 1298
c47ff5f1 1299On simple groups, such as the pattern C<< (?> [^()]+ ) >>, a comparable
19799a22 1300effect may be achieved by negative look-ahead, as in C<[^()]+ (?! [^()] )>.
c277df42 1301This was only 4 times slower on a string with 1000000 C<a>s.
1302
9da458fc 1303The "grab all you can, and do not give anything back" semantic is desirable
1304in many situations where on the first sight a simple C<()*> looks like
1305the correct solution. Suppose we parse text with comments being delimited
1306by C<#> followed by some optional (horizontal) whitespace. Contrary to
4375e838 1307its appearance, C<#[ \t]*> I<is not> the correct subexpression to match
9da458fc 1308the comment delimiter, because it may "give up" some whitespace if
1309the remainder of the pattern can be made to match that way. The correct
1310answer is either one of these:
1311
1312 (?>#[ \t]*)
1313 #[ \t]*(?![ \t])
1314
1315For example, to grab non-empty comments into $1, one should use either
1316one of these:
1317
1318 / (?> \# [ \t]* ) ( .+ ) /x;
1319 / \# [ \t]* ( [^ \t] .* ) /x;
1320
1321Which one you pick depends on which of these expressions better reflects
1322the above specification of comments.
1323
6bda09f9 1324In some literature this construct is called "atomic matching" or
1325"possessive matching".
1326
b9b4dddf 1327Possessive quantifiers are equivalent to putting the item they are applied
1328to inside of one of these constructs. The following equivalences apply:
1329
1330 Quantifier Form Bracketing Form
1331 --------------- ---------------
1332 PAT*+ (?>PAT*)
1333 PAT++ (?>PAT+)
1334 PAT?+ (?>PAT?)
1335 PAT{min,max}+ (?>PAT{min,max})
1336
e2e6a0f1 1337=back
1338
1339=head2 Special Backtracking Control Verbs
1340
1341B<WARNING:> These patterns are experimental and subject to change or
0d017f4d 1342removal in a future version of Perl. Their usage in production code should
e2e6a0f1 1343be noted to avoid problems during upgrades.
1344
1345These special patterns are generally of the form C<(*VERB:ARG)>. Unless
1346otherwise stated the ARG argument is optional; in some cases, it is
1347forbidden.
1348
1349Any pattern containing a special backtracking verb that allows an argument
e1020413 1350has the special behaviour that when executed it sets the current package's
5d458dd8 1351C<$REGERROR> and C<$REGMARK> variables. When doing so the following
1352rules apply:
e2e6a0f1 1353
5d458dd8 1354On failure, the C<$REGERROR> variable will be set to the ARG value of the
1355verb pattern, if the verb was involved in the failure of the match. If the
1356ARG part of the pattern was omitted, then C<$REGERROR> will be set to the
1357name of the last C<(*MARK:NAME)> pattern executed, or to TRUE if there was
1358none. Also, the C<$REGMARK> variable will be set to FALSE.
e2e6a0f1 1359
5d458dd8 1360On a successful match, the C<$REGERROR> variable will be set to FALSE, and
1361the C<$REGMARK> variable will be set to the name of the last
1362C<(*MARK:NAME)> pattern executed. See the explanation for the
1363C<(*MARK:NAME)> verb below for more details.
e2e6a0f1 1364
5d458dd8 1365B<NOTE:> C<$REGERROR> and C<$REGMARK> are not magic variables like C<$1>
1366and most other regex related variables. They are not local to a scope, nor
1367readonly, but instead are volatile package variables similar to C<$AUTOLOAD>.
1368Use C<local> to localize changes to them to a specific scope if necessary.
e2e6a0f1 1369
1370If a pattern does not contain a special backtracking verb that allows an
5d458dd8 1371argument, then C<$REGERROR> and C<$REGMARK> are not touched at all.
e2e6a0f1 1372
1373=over 4
1374
1375=item Verbs that take an argument
1376
1377=over 4
1378
5d458dd8 1379=item C<(*PRUNE)> C<(*PRUNE:NAME)>
f7819f85 1380X<(*PRUNE)> X<(*PRUNE:NAME)>
54612592 1381
5d458dd8 1382This zero-width pattern prunes the backtracking tree at the current point
1383when backtracked into on failure. Consider the pattern C<A (*PRUNE) B>,
1384where A and B are complex patterns. Until the C<(*PRUNE)> verb is reached,
1385A may backtrack as necessary to match. Once it is reached, matching
1386continues in B, which may also backtrack as necessary; however, should B
1387not match, then no further backtracking will take place, and the pattern
1388will fail outright at the current starting position.
54612592 1389
1390The following example counts all the possible matching strings in a
1391pattern (without actually matching any of them).
1392
e2e6a0f1 1393 'aaab' =~ /a+b?(?{print "$&\n"; $count++})(*FAIL)/;
54612592 1394 print "Count=$count\n";
1395
1396which produces:
1397
1398 aaab
1399 aaa
1400 aa
1401 a
1402 aab
1403 aa
1404 a
1405 ab
1406 a
1407 Count=9
1408
5d458dd8 1409If we add a C<(*PRUNE)> before the count like the following
54612592 1410
5d458dd8 1411 'aaab' =~ /a+b?(*PRUNE)(?{print "$&\n"; $count++})(*FAIL)/;
54612592 1412 print "Count=$count\n";
1413
1414we prevent backtracking and find the count of the longest matching
353c6505 1415at each matching starting point like so:
54612592 1416
1417 aaab
1418 aab
1419 ab
1420 Count=3
1421
5d458dd8 1422Any number of C<(*PRUNE)> assertions may be used in a pattern.
54612592 1423
5d458dd8 1424See also C<< (?>pattern) >> and possessive quantifiers for other ways to
1425control backtracking. In some cases, the use of C<(*PRUNE)> can be
1426replaced with a C<< (?>pattern) >> with no functional difference; however,
1427C<(*PRUNE)> can be used to handle cases that cannot be expressed using a
1428C<< (?>pattern) >> alone.
54612592 1429
e2e6a0f1 1430
5d458dd8 1431=item C<(*SKIP)> C<(*SKIP:NAME)>
1432X<(*SKIP)>
e2e6a0f1 1433
5d458dd8 1434This zero-width pattern is similar to C<(*PRUNE)>, except that on
e2e6a0f1 1435failure it also signifies that whatever text that was matched leading up
5d458dd8 1436to the C<(*SKIP)> pattern being executed cannot be part of I<any> match
1437of this pattern. This effectively means that the regex engine "skips" forward
1438to this position on failure and tries to match again, (assuming that
1439there is sufficient room to match).
1440
1441The name of the C<(*SKIP:NAME)> pattern has special significance. If a
1442C<(*MARK:NAME)> was encountered while matching, then it is that position
1443which is used as the "skip point". If no C<(*MARK)> of that name was
1444encountered, then the C<(*SKIP)> operator has no effect. When used
1445without a name the "skip point" is where the match point was when
1446executing the (*SKIP) pattern.
1447
1448Compare the following to the examples in C<(*PRUNE)>, note the string
24b23f37 1449is twice as long:
1450
5d458dd8 1451 'aaabaaab' =~ /a+b?(*SKIP)(?{print "$&\n"; $count++})(*FAIL)/;
24b23f37 1452 print "Count=$count\n";
1453
1454outputs
1455
1456 aaab
1457 aaab
1458 Count=2
1459
5d458dd8 1460Once the 'aaab' at the start of the string has matched, and the C<(*SKIP)>
353c6505 1461executed, the next starting point will be where the cursor was when the
5d458dd8 1462C<(*SKIP)> was executed.
1463
5d458dd8 1464=item C<(*MARK:NAME)> C<(*:NAME)>
1465X<(*MARK)> C<(*MARK:NAME)> C<(*:NAME)>
1466
1467This zero-width pattern can be used to mark the point reached in a string
1468when a certain part of the pattern has been successfully matched. This
1469mark may be given a name. A later C<(*SKIP)> pattern will then skip
1470forward to that point if backtracked into on failure. Any number of
b4222fa9 1471C<(*MARK)> patterns are allowed, and the NAME portion may be duplicated.
5d458dd8 1472
1473In addition to interacting with the C<(*SKIP)> pattern, C<(*MARK:NAME)>
1474can be used to "label" a pattern branch, so that after matching, the
1475program can determine which branches of the pattern were involved in the
1476match.
1477
1478When a match is successful, the C<$REGMARK> variable will be set to the
1479name of the most recently executed C<(*MARK:NAME)> that was involved
1480in the match.
1481
1482This can be used to determine which branch of a pattern was matched
c62285ac 1483without using a separate capture buffer for each branch, which in turn
5d458dd8 1484can result in a performance improvement, as perl cannot optimize
1485C</(?:(x)|(y)|(z))/> as efficiently as something like
1486C</(?:x(*MARK:x)|y(*MARK:y)|z(*MARK:z))/>.
1487
1488When a match has failed, and unless another verb has been involved in
1489failing the match and has provided its own name to use, the C<$REGERROR>
1490variable will be set to the name of the most recently executed
1491C<(*MARK:NAME)>.
1492
1493See C<(*SKIP)> for more details.
1494
b62d2d15 1495As a shortcut C<(*MARK:NAME)> can be written C<(*:NAME)>.
1496
5d458dd8 1497=item C<(*THEN)> C<(*THEN:NAME)>
1498
241e7389 1499This is similar to the "cut group" operator C<::> from Perl 6. Like
5d458dd8 1500C<(*PRUNE)>, this verb always matches, and when backtracked into on
1501failure, it causes the regex engine to try the next alternation in the
1502innermost enclosing group (capturing or otherwise).
1503
1504Its name comes from the observation that this operation combined with the
1505alternation operator (C<|>) can be used to create what is essentially a
1506pattern-based if/then/else block:
1507
1508 ( COND (*THEN) FOO | COND2 (*THEN) BAR | COND3 (*THEN) BAZ )
1509
1510Note that if this operator is used and NOT inside of an alternation then
1511it acts exactly like the C<(*PRUNE)> operator.
1512
1513 / A (*PRUNE) B /
1514
1515is the same as
1516
1517 / A (*THEN) B /
1518
1519but
1520
1521 / ( A (*THEN) B | C (*THEN) D ) /
1522
1523is not the same as
1524
1525 / ( A (*PRUNE) B | C (*PRUNE) D ) /
1526
1527as after matching the A but failing on the B the C<(*THEN)> verb will
1528backtrack and try C; but the C<(*PRUNE)> verb will simply fail.
24b23f37 1529
e2e6a0f1 1530=item C<(*COMMIT)>
1531X<(*COMMIT)>
24b23f37 1532
241e7389 1533This is the Perl 6 "commit pattern" C<< <commit> >> or C<:::>. It's a
5d458dd8 1534zero-width pattern similar to C<(*SKIP)>, except that when backtracked
1535into on failure it causes the match to fail outright. No further attempts
1536to find a valid match by advancing the start pointer will occur again.
1537For example,
24b23f37 1538
e2e6a0f1 1539 'aaabaaab' =~ /a+b?(*COMMIT)(?{print "$&\n"; $count++})(*FAIL)/;
24b23f37 1540 print "Count=$count\n";
1541
1542outputs
1543
1544 aaab
1545 Count=1
1546
e2e6a0f1 1547In other words, once the C<(*COMMIT)> has been entered, and if the pattern
1548does not match, the regex engine will not try any further matching on the
1549rest of the string.
c277df42 1550
e2e6a0f1 1551=back
9af228c6 1552
e2e6a0f1 1553=item Verbs without an argument
9af228c6 1554
1555=over 4
1556
e2e6a0f1 1557=item C<(*FAIL)> C<(*F)>
1558X<(*FAIL)> X<(*F)>
9af228c6 1559
e2e6a0f1 1560This pattern matches nothing and always fails. It can be used to force the
1561engine to backtrack. It is equivalent to C<(?!)>, but easier to read. In
1562fact, C<(?!)> gets optimised into C<(*FAIL)> internally.
9af228c6 1563
e2e6a0f1 1564It is probably useful only when combined with C<(?{})> or C<(??{})>.
9af228c6 1565
e2e6a0f1 1566=item C<(*ACCEPT)>
1567X<(*ACCEPT)>
9af228c6 1568
e2e6a0f1 1569B<WARNING:> This feature is highly experimental. It is not recommended
1570for production code.
9af228c6 1571
e2e6a0f1 1572This pattern matches nothing and causes the end of successful matching at
1573the point at which the C<(*ACCEPT)> pattern was encountered, regardless of
1574whether there is actually more to match in the string. When inside of a
0d017f4d 1575nested pattern, such as recursion, or in a subpattern dynamically generated
e2e6a0f1 1576via C<(??{})>, only the innermost pattern is ended immediately.
9af228c6 1577
e2e6a0f1 1578If the C<(*ACCEPT)> is inside of capturing buffers then the buffers are
1579marked as ended at the point at which the C<(*ACCEPT)> was encountered.
1580For instance:
9af228c6 1581
e2e6a0f1 1582 'AB' =~ /(A (A|B(*ACCEPT)|C) D)(E)/x;
9af228c6 1583
e2e6a0f1 1584will match, and C<$1> will be C<AB> and C<$2> will be C<B>, C<$3> will not
0d017f4d 1585be set. If another branch in the inner parentheses were matched, such as in the
e2e6a0f1 1586string 'ACDE', then the C<D> and C<E> would have to be matched as well.
9af228c6 1587
1588=back
c277df42 1589
a0d0e21e 1590=back
1591
c07a80fd 1592=head2 Backtracking
d74e8afc 1593X<backtrack> X<backtracking>
c07a80fd 1594
35a734be 1595NOTE: This section presents an abstract approximation of regular
1596expression behavior. For a more rigorous (and complicated) view of
1597the rules involved in selecting a match among possible alternatives,
0d017f4d 1598see L<Combining RE Pieces>.
35a734be 1599
c277df42 1600A fundamental feature of regular expression matching involves the
5a964f20 1601notion called I<backtracking>, which is currently used (when needed)
0d017f4d 1602by all regular non-possessive expression quantifiers, namely C<*>, C<*?>, C<+>,
9da458fc 1603C<+?>, C<{n,m}>, and C<{n,m}?>. Backtracking is often optimized
1604internally, but the general principle outlined here is valid.
c07a80fd 1605
1606For a regular expression to match, the I<entire> regular expression must
1607match, not just part of it. So if the beginning of a pattern containing a
1608quantifier succeeds in a way that causes later parts in the pattern to
1609fail, the matching engine backs up and recalculates the beginning
1610part--that's why it's called backtracking.
1611
1612Here is an example of backtracking: Let's say you want to find the
1613word following "foo" in the string "Food is on the foo table.":
1614
1615 $_ = "Food is on the foo table.";
1616 if ( /\b(foo)\s+(\w+)/i ) {
1617 print "$2 follows $1.\n";
1618 }
1619
1620When the match runs, the first part of the regular expression (C<\b(foo)>)
1621finds a possible match right at the beginning of the string, and loads up
1622$1 with "Foo". However, as soon as the matching engine sees that there's
1623no whitespace following the "Foo" that it had saved in $1, it realizes its
68dc0745 1624mistake and starts over again one character after where it had the
c07a80fd 1625tentative match. This time it goes all the way until the next occurrence
1626of "foo". The complete regular expression matches this time, and you get
1627the expected output of "table follows foo."
1628
1629Sometimes minimal matching can help a lot. Imagine you'd like to match
1630everything between "foo" and "bar". Initially, you write something
1631like this:
1632
1633 $_ = "The food is under the bar in the barn.";
1634 if ( /foo(.*)bar/ ) {
1635 print "got <$1>\n";
1636 }
1637
1638Which perhaps unexpectedly yields:
1639
1640 got <d is under the bar in the >
1641
1642That's because C<.*> was greedy, so you get everything between the
14218588 1643I<first> "foo" and the I<last> "bar". Here it's more effective
c07a80fd 1644to use minimal matching to make sure you get the text between a "foo"
1645and the first "bar" thereafter.
1646
1647 if ( /foo(.*?)bar/ ) { print "got <$1>\n" }
1648 got <d is under the >
1649
0d017f4d 1650Here's another example. Let's say you'd like to match a number at the end
b6e13d97 1651of a string, and you also want to keep the preceding part of the match.
c07a80fd 1652So you write this:
1653
1654 $_ = "I have 2 numbers: 53147";
1655 if ( /(.*)(\d*)/ ) { # Wrong!
1656 print "Beginning is <$1>, number is <$2>.\n";
1657 }
1658
1659That won't work at all, because C<.*> was greedy and gobbled up the
1660whole string. As C<\d*> can match on an empty string the complete
1661regular expression matched successfully.
1662
8e1088bc 1663 Beginning is <I have 2 numbers: 53147>, number is <>.
c07a80fd 1664
1665Here are some variants, most of which don't work:
1666
1667 $_ = "I have 2 numbers: 53147";
1668 @pats = qw{
1669 (.*)(\d*)
1670 (.*)(\d+)
1671 (.*?)(\d*)
1672 (.*?)(\d+)
1673 (.*)(\d+)$
1674 (.*?)(\d+)$
1675 (.*)\b(\d+)$
1676 (.*\D)(\d+)$
1677 };
1678
1679 for $pat (@pats) {
1680 printf "%-12s ", $pat;
1681 if ( /$pat/ ) {
1682 print "<$1> <$2>\n";
1683 } else {
1684 print "FAIL\n";
1685 }
1686 }
1687
1688That will print out:
1689
1690 (.*)(\d*) <I have 2 numbers: 53147> <>
1691 (.*)(\d+) <I have 2 numbers: 5314> <7>
1692 (.*?)(\d*) <> <>
1693 (.*?)(\d+) <I have > <2>
1694 (.*)(\d+)$ <I have 2 numbers: 5314> <7>
1695 (.*?)(\d+)$ <I have 2 numbers: > <53147>
1696 (.*)\b(\d+)$ <I have 2 numbers: > <53147>
1697 (.*\D)(\d+)$ <I have 2 numbers: > <53147>
1698
1699As you see, this can be a bit tricky. It's important to realize that a
1700regular expression is merely a set of assertions that gives a definition
1701of success. There may be 0, 1, or several different ways that the
1702definition might succeed against a particular string. And if there are
5a964f20 1703multiple ways it might succeed, you need to understand backtracking to
1704know which variety of success you will achieve.
c07a80fd 1705
19799a22 1706When using look-ahead assertions and negations, this can all get even
8b19b778 1707trickier. Imagine you'd like to find a sequence of non-digits not
c07a80fd 1708followed by "123". You might try to write that as
1709
871b0233 1710 $_ = "ABC123";
1711 if ( /^\D*(?!123)/ ) { # Wrong!
1712 print "Yup, no 123 in $_\n";
1713 }
c07a80fd 1714
1715But that isn't going to match; at least, not the way you're hoping. It
1716claims that there is no 123 in the string. Here's a clearer picture of
9b9391b2 1717why that pattern matches, contrary to popular expectations:
c07a80fd 1718
4358a253 1719 $x = 'ABC123';
1720 $y = 'ABC445';
c07a80fd 1721
4358a253 1722 print "1: got $1\n" if $x =~ /^(ABC)(?!123)/;
1723 print "2: got $1\n" if $y =~ /^(ABC)(?!123)/;
c07a80fd 1724
4358a253 1725 print "3: got $1\n" if $x =~ /^(\D*)(?!123)/;
1726 print "4: got $1\n" if $y =~ /^(\D*)(?!123)/;
c07a80fd 1727
1728This prints
1729
1730 2: got ABC
1731 3: got AB
1732 4: got ABC
1733
5f05dabc 1734You might have expected test 3 to fail because it seems to a more
c07a80fd 1735general purpose version of test 1. The important difference between
1736them is that test 3 contains a quantifier (C<\D*>) and so can use
1737backtracking, whereas test 1 will not. What's happening is
1738that you've asked "Is it true that at the start of $x, following 0 or more
5f05dabc 1739non-digits, you have something that's not 123?" If the pattern matcher had
c07a80fd 1740let C<\D*> expand to "ABC", this would have caused the whole pattern to
54310121 1741fail.
14218588 1742
c07a80fd 1743The search engine will initially match C<\D*> with "ABC". Then it will
14218588 1744try to match C<(?!123> with "123", which fails. But because
c07a80fd 1745a quantifier (C<\D*>) has been used in the regular expression, the
1746search engine can backtrack and retry the match differently
54310121 1747in the hope of matching the complete regular expression.
c07a80fd 1748
5a964f20 1749The pattern really, I<really> wants to succeed, so it uses the
1750standard pattern back-off-and-retry and lets C<\D*> expand to just "AB" this
c07a80fd 1751time. Now there's indeed something following "AB" that is not
14218588 1752"123". It's "C123", which suffices.
c07a80fd 1753
14218588 1754We can deal with this by using both an assertion and a negation.
1755We'll say that the first part in $1 must be followed both by a digit
1756and by something that's not "123". Remember that the look-aheads
1757are zero-width expressions--they only look, but don't consume any
1758of the string in their match. So rewriting this way produces what
c07a80fd 1759you'd expect; that is, case 5 will fail, but case 6 succeeds:
1760
4358a253 1761 print "5: got $1\n" if $x =~ /^(\D*)(?=\d)(?!123)/;
1762 print "6: got $1\n" if $y =~ /^(\D*)(?=\d)(?!123)/;
c07a80fd 1763
1764 6: got ABC
1765
5a964f20 1766In other words, the two zero-width assertions next to each other work as though
19799a22 1767they're ANDed together, just as you'd use any built-in assertions: C</^$/>
c07a80fd 1768matches only if you're at the beginning of the line AND the end of the
1769line simultaneously. The deeper underlying truth is that juxtaposition in
1770regular expressions always means AND, except when you write an explicit OR
1771using the vertical bar. C</ab/> means match "a" AND (then) match "b",
1772although the attempted matches are made at different positions because "a"
1773is not a zero-width assertion, but a one-width assertion.
1774
0d017f4d 1775B<WARNING>: Particularly complicated regular expressions can take
14218588 1776exponential time to solve because of the immense number of possible
0d017f4d 1777ways they can use backtracking to try for a match. For example, without
9da458fc 1778internal optimizations done by the regular expression engine, this will
1779take a painfully long time to run:
c07a80fd 1780
e1901655 1781 'aaaaaaaaaaaa' =~ /((a{0,5}){0,5})*[c]/
1782
1783And if you used C<*>'s in the internal groups instead of limiting them
1784to 0 through 5 matches, then it would take forever--or until you ran
1785out of stack space. Moreover, these internal optimizations are not
1786always applicable. For example, if you put C<{0,5}> instead of C<*>
1787on the external group, no current optimization is applicable, and the
1788match takes a long time to finish.
c07a80fd 1789
9da458fc 1790A powerful tool for optimizing such beasts is what is known as an
1791"independent group",
c47ff5f1 1792which does not backtrack (see L<C<< (?>pattern) >>>). Note also that
9da458fc 1793zero-length look-ahead/look-behind assertions will not backtrack to make
5d458dd8 1794the tail match, since they are in "logical" context: only
14218588 1795whether they match is considered relevant. For an example
9da458fc 1796where side-effects of look-ahead I<might> have influenced the
c47ff5f1 1797following match, see L<C<< (?>pattern) >>>.
c277df42 1798
a0d0e21e 1799=head2 Version 8 Regular Expressions
d74e8afc 1800X<regular expression, version 8> X<regex, version 8> X<regexp, version 8>
a0d0e21e 1801
5a964f20 1802In case you're not familiar with the "regular" Version 8 regex
a0d0e21e 1803routines, here are the pattern-matching rules not described above.
1804
54310121 1805Any single character matches itself, unless it is a I<metacharacter>
a0d0e21e 1806with a special meaning described here or above. You can cause
5a964f20 1807characters that normally function as metacharacters to be interpreted
5f05dabc 1808literally by prefixing them with a "\" (e.g., "\." matches a ".", not any
0d017f4d 1809character; "\\" matches a "\"). This escape mechanism is also required
1810for the character used as the pattern delimiter.
1811
1812A series of characters matches that series of characters in the target
1813string, so the pattern C<blurfl> would match "blurfl" in the target
1814string.
a0d0e21e 1815
1816You can specify a character class, by enclosing a list of characters
5d458dd8 1817in C<[]>, which will match any character from the list. If the
a0d0e21e 1818first character after the "[" is "^", the class matches any character not
14218588 1819in the list. Within a list, the "-" character specifies a
5a964f20 1820range, so that C<a-z> represents all characters between "a" and "z",
8a4f6ac2 1821inclusive. If you want either "-" or "]" itself to be a member of a
1822class, put it at the start of the list (possibly after a "^"), or
1823escape it with a backslash. "-" is also taken literally when it is
1824at the end of the list, just before the closing "]". (The
84850974 1825following all specify the same class of three characters: C<[-az]>,
1826C<[az-]>, and C<[a\-z]>. All are different from C<[a-z]>, which
5d458dd8 1827specifies a class containing twenty-six characters, even on EBCDIC-based
1828character sets.) Also, if you try to use the character
1829classes C<\w>, C<\W>, C<\s>, C<\S>, C<\d>, or C<\D> as endpoints of
1830a range, the "-" is understood literally.
a0d0e21e 1831
8ada0baa 1832Note also that the whole range idea is rather unportable between
1833character sets--and even within character sets they may cause results
1834you probably didn't expect. A sound principle is to use only ranges
0d017f4d 1835that begin from and end at either alphabetics of equal case ([a-e],
8ada0baa 1836[A-E]), or digits ([0-9]). Anything else is unsafe. If in doubt,
1837spell out the character sets in full.
1838
54310121 1839Characters may be specified using a metacharacter syntax much like that
a0d0e21e 1840used in C: "\n" matches a newline, "\t" a tab, "\r" a carriage return,
1841"\f" a form feed, etc. More generally, \I<nnn>, where I<nnn> is a string
5d458dd8 1842of octal digits, matches the character whose coded character set value
1843is I<nnn>. Similarly, \xI<nn>, where I<nn> are hexadecimal digits,
1844matches the character whose numeric value is I<nn>. The expression \cI<x>
1845matches the character control-I<x>. Finally, the "." metacharacter
fb55449c 1846matches any character except "\n" (unless you use C</s>).
a0d0e21e 1847
1848You can specify a series of alternatives for a pattern using "|" to
1849separate them, so that C<fee|fie|foe> will match any of "fee", "fie",
5a964f20 1850or "foe" in the target string (as would C<f(e|i|o)e>). The
a0d0e21e 1851first alternative includes everything from the last pattern delimiter
1852("(", "[", or the beginning of the pattern) up to the first "|", and
1853the last alternative contains everything from the last "|" to the next
14218588 1854pattern delimiter. That's why it's common practice to include
1855alternatives in parentheses: to minimize confusion about where they
a3cb178b 1856start and end.
1857
5a964f20 1858Alternatives are tried from left to right, so the first
a3cb178b 1859alternative found for which the entire expression matches, is the one that
1860is chosen. This means that alternatives are not necessarily greedy. For
628afcb5 1861example: when matching C<foo|foot> against "barefoot", only the "foo"
a3cb178b 1862part will match, as that is the first alternative tried, and it successfully
1863matches the target string. (This might not seem important, but it is
1864important when you are capturing matched text using parentheses.)
1865
5a964f20 1866Also remember that "|" is interpreted as a literal within square brackets,
a3cb178b 1867so if you write C<[fee|fie|foe]> you're really only matching C<[feio|]>.
a0d0e21e 1868
14218588 1869Within a pattern, you may designate subpatterns for later reference
1870by enclosing them in parentheses, and you may refer back to the
1871I<n>th subpattern later in the pattern using the metacharacter
1872\I<n>. Subpatterns are numbered based on the left to right order
1873of their opening parenthesis. A backreference matches whatever
1874actually matched the subpattern in the string being examined, not
1875the rules for that subpattern. Therefore, C<(0|0x)\d*\s\1\d*> will
1876match "0x1234 0x4321", but not "0x1234 01234", because subpattern
18771 matched "0x", even though the rule C<0|0x> could potentially match
1878the leading 0 in the second number.
cb1a09d0 1879
0d017f4d 1880=head2 Warning on \1 Instead of $1
cb1a09d0 1881
5a964f20 1882Some people get too used to writing things like:
cb1a09d0 1883
1884 $pattern =~ s/(\W)/\\\1/g;
1885
1886This is grandfathered for the RHS of a substitute to avoid shocking the
1887B<sed> addicts, but it's a dirty habit to get into. That's because in
d1be9408 1888PerlThink, the righthand side of an C<s///> is a double-quoted string. C<\1> in
cb1a09d0 1889the usual double-quoted string means a control-A. The customary Unix
1890meaning of C<\1> is kludged in for C<s///>. However, if you get into the habit
1891of doing that, you get yourself into trouble if you then add an C</e>
1892modifier.
1893
5a964f20 1894 s/(\d+)/ \1 + 1 /eg; # causes warning under -w
cb1a09d0 1895
1896Or if you try to do
1897
1898 s/(\d+)/\1000/;
1899
1900You can't disambiguate that by saying C<\{1}000>, whereas you can fix it with
14218588 1901C<${1}000>. The operation of interpolation should not be confused
cb1a09d0 1902with the operation of matching a backreference. Certainly they mean two
1903different things on the I<left> side of the C<s///>.
9fa51da4 1904
0d017f4d 1905=head2 Repeated Patterns Matching a Zero-length Substring
c84d73f1 1906
19799a22 1907B<WARNING>: Difficult material (and prose) ahead. This section needs a rewrite.
c84d73f1 1908
1909Regular expressions provide a terse and powerful programming language. As
1910with most other power tools, power comes together with the ability
1911to wreak havoc.
1912
1913A common abuse of this power stems from the ability to make infinite
628afcb5 1914loops using regular expressions, with something as innocuous as:
c84d73f1 1915
1916 'foo' =~ m{ ( o? )* }x;
1917
0d017f4d 1918The C<o?> matches at the beginning of C<'foo'>, and since the position
c84d73f1 1919in the string is not moved by the match, C<o?> would match again and again
527e91da 1920because of the C<*> quantifier. Another common way to create a similar cycle
c84d73f1 1921is with the looping modifier C<//g>:
1922
1923 @matches = ( 'foo' =~ m{ o? }xg );
1924
1925or
1926
1927 print "match: <$&>\n" while 'foo' =~ m{ o? }xg;
1928
1929or the loop implied by split().
1930
1931However, long experience has shown that many programming tasks may
14218588 1932be significantly simplified by using repeated subexpressions that
1933may match zero-length substrings. Here's a simple example being:
c84d73f1 1934
1935 @chars = split //, $string; # // is not magic in split
1936 ($whitewashed = $string) =~ s/()/ /g; # parens avoid magic s// /
1937
9da458fc 1938Thus Perl allows such constructs, by I<forcefully breaking
c84d73f1 1939the infinite loop>. The rules for this are different for lower-level
527e91da 1940loops given by the greedy quantifiers C<*+{}>, and for higher-level
c84d73f1 1941ones like the C</g> modifier or split() operator.
1942
19799a22 1943The lower-level loops are I<interrupted> (that is, the loop is
1944broken) when Perl detects that a repeated expression matched a
1945zero-length substring. Thus
c84d73f1 1946
1947 m{ (?: NON_ZERO_LENGTH | ZERO_LENGTH )* }x;
1948
5d458dd8 1949is made equivalent to
c84d73f1 1950
5d458dd8 1951 m{ (?: NON_ZERO_LENGTH )*
1952 |
1953 (?: ZERO_LENGTH )?
c84d73f1 1954 }x;
1955
1956The higher level-loops preserve an additional state between iterations:
5d458dd8 1957whether the last match was zero-length. To break the loop, the following
c84d73f1 1958match after a zero-length match is prohibited to have a length of zero.
5d458dd8 1959This prohibition interacts with backtracking (see L<"Backtracking">),
c84d73f1 1960and so the I<second best> match is chosen if the I<best> match is of
1961zero length.
1962
19799a22 1963For example:
c84d73f1 1964
1965 $_ = 'bar';
1966 s/\w??/<$&>/g;
1967
20fb949f 1968results in C<< <><b><><a><><r><> >>. At each position of the string the best
5d458dd8 1969match given by non-greedy C<??> is the zero-length match, and the I<second
c84d73f1 1970best> match is what is matched by C<\w>. Thus zero-length matches
1971alternate with one-character-long matches.
1972
5d458dd8 1973Similarly, for repeated C<m/()/g> the second-best match is the match at the
c84d73f1 1974position one notch further in the string.
1975
19799a22 1976The additional state of being I<matched with zero-length> is associated with
c84d73f1 1977the matched string, and is reset by each assignment to pos().
9da458fc 1978Zero-length matches at the end of the previous match are ignored
1979during C<split>.
c84d73f1 1980
0d017f4d 1981=head2 Combining RE Pieces
35a734be 1982
1983Each of the elementary pieces of regular expressions which were described
1984before (such as C<ab> or C<\Z>) could match at most one substring
1985at the given position of the input string. However, in a typical regular
1986expression these elementary pieces are combined into more complicated
1987patterns using combining operators C<ST>, C<S|T>, C<S*> etc
1988(in these examples C<S> and C<T> are regular subexpressions).
1989
1990Such combinations can include alternatives, leading to a problem of choice:
1991if we match a regular expression C<a|ab> against C<"abc">, will it match
1992substring C<"a"> or C<"ab">? One way to describe which substring is
1993actually matched is the concept of backtracking (see L<"Backtracking">).
1994However, this description is too low-level and makes you think
1995in terms of a particular implementation.
1996
1997Another description starts with notions of "better"/"worse". All the
1998substrings which may be matched by the given regular expression can be
1999sorted from the "best" match to the "worst" match, and it is the "best"
2000match which is chosen. This substitutes the question of "what is chosen?"
2001by the question of "which matches are better, and which are worse?".
2002
2003Again, for elementary pieces there is no such question, since at most
2004one match at a given position is possible. This section describes the
2005notion of better/worse for combining operators. In the description
2006below C<S> and C<T> are regular subexpressions.
2007
13a2d996 2008=over 4
35a734be 2009
2010=item C<ST>
2011
2012Consider two possible matches, C<AB> and C<A'B'>, C<A> and C<A'> are
2013substrings which can be matched by C<S>, C<B> and C<B'> are substrings
5d458dd8 2014which can be matched by C<T>.
35a734be 2015
2016If C<A> is better match for C<S> than C<A'>, C<AB> is a better
2017match than C<A'B'>.
2018
2019If C<A> and C<A'> coincide: C<AB> is a better match than C<AB'> if
2020C<B> is better match for C<T> than C<B'>.
2021
2022=item C<S|T>
2023
2024When C<S> can match, it is a better match than when only C<T> can match.
2025
2026Ordering of two matches for C<S> is the same as for C<S>. Similar for
2027two matches for C<T>.
2028
2029=item C<S{REPEAT_COUNT}>
2030
2031Matches as C<SSS...S> (repeated as many times as necessary).
2032
2033=item C<S{min,max}>
2034
2035Matches as C<S{max}|S{max-1}|...|S{min+1}|S{min}>.
2036
2037=item C<S{min,max}?>
2038
2039Matches as C<S{min}|S{min+1}|...|S{max-1}|S{max}>.
2040
2041=item C<S?>, C<S*>, C<S+>
2042
2043Same as C<S{0,1}>, C<S{0,BIG_NUMBER}>, C<S{1,BIG_NUMBER}> respectively.
2044
2045=item C<S??>, C<S*?>, C<S+?>
2046
2047Same as C<S{0,1}?>, C<S{0,BIG_NUMBER}?>, C<S{1,BIG_NUMBER}?> respectively.
2048
c47ff5f1 2049=item C<< (?>S) >>
35a734be 2050
2051Matches the best match for C<S> and only that.
2052
2053=item C<(?=S)>, C<(?<=S)>
2054
2055Only the best match for C<S> is considered. (This is important only if
2056C<S> has capturing parentheses, and backreferences are used somewhere
2057else in the whole regular expression.)
2058
2059=item C<(?!S)>, C<(?<!S)>
2060
2061For this grouping operator there is no need to describe the ordering, since
2062only whether or not C<S> can match is important.
2063
6bda09f9 2064=item C<(??{ EXPR })>, C<(?PARNO)>
35a734be 2065
2066The ordering is the same as for the regular expression which is
6bda09f9 2067the result of EXPR, or the pattern contained by capture buffer PARNO.
35a734be 2068
2069=item C<(?(condition)yes-pattern|no-pattern)>
2070
2071Recall that which of C<yes-pattern> or C<no-pattern> actually matches is
2072already determined. The ordering of the matches is the same as for the
2073chosen subexpression.
2074
2075=back
2076
2077The above recipes describe the ordering of matches I<at a given position>.
2078One more rule is needed to understand how a match is determined for the
2079whole regular expression: a match at an earlier position is always better
2080than a match at a later position.
2081
0d017f4d 2082=head2 Creating Custom RE Engines
c84d73f1 2083
2084Overloaded constants (see L<overload>) provide a simple way to extend
2085the functionality of the RE engine.
2086
2087Suppose that we want to enable a new RE escape-sequence C<\Y|> which
0d017f4d 2088matches at a boundary between whitespace characters and non-whitespace
c84d73f1 2089characters. Note that C<(?=\S)(?<!\S)|(?!\S)(?<=\S)> matches exactly
2090at these positions, so we want to have each C<\Y|> in the place of the
2091more complicated version. We can create a module C<customre> to do
2092this:
2093
2094 package customre;
2095 use overload;
2096
2097 sub import {
2098 shift;
2099 die "No argument to customre::import allowed" if @_;
2100 overload::constant 'qr' => \&convert;
2101 }
2102
2103 sub invalid { die "/$_[0]/: invalid escape '\\$_[1]'"}
2104
580a9fe1 2105 # We must also take care of not escaping the legitimate \\Y|
2106 # sequence, hence the presence of '\\' in the conversion rules.
5d458dd8 2107 my %rules = ( '\\' => '\\\\',
c84d73f1 2108 'Y|' => qr/(?=\S)(?<!\S)|(?!\S)(?<=\S)/ );
2109 sub convert {
2110 my $re = shift;
5d458dd8 2111 $re =~ s{
c84d73f1 2112 \\ ( \\ | Y . )
2113 }
5d458dd8 2114 { $rules{$1} or invalid($re,$1) }sgex;
c84d73f1 2115 return $re;
2116 }
2117
2118Now C<use customre> enables the new escape in constant regular
2119expressions, i.e., those without any runtime variable interpolations.
2120As documented in L<overload>, this conversion will work only over
2121literal parts of regular expressions. For C<\Y|$re\Y|> the variable
2122part of this regular expression needs to be converted explicitly
2123(but only if the special meaning of C<\Y|> should be enabled inside $re):
2124
2125 use customre;
2126 $re = <>;
2127 chomp $re;
2128 $re = customre::convert $re;
2129 /\Y|$re\Y|/;
2130
1f1031fe 2131=head1 PCRE/Python Support
2132
99d59c4d 2133As of Perl 5.10.0, Perl supports several Python/PCRE specific extensions
1f1031fe 2134to the regex syntax. While Perl programmers are encouraged to use the
99d59c4d 2135Perl specific syntax, the following are also accepted:
1f1031fe 2136
2137=over 4
2138
ae5648b3 2139=item C<< (?PE<lt>NAMEE<gt>pattern) >>
1f1031fe 2140
2141Define a named capture buffer. Equivalent to C<< (?<NAME>pattern) >>.
2142
2143=item C<< (?P=NAME) >>
2144
2145Backreference to a named capture buffer. Equivalent to C<< \g{NAME} >>.
2146
2147=item C<< (?P>NAME) >>
2148
2149Subroutine call to a named capture buffer. Equivalent to C<< (?&NAME) >>.
2150
ee9b8eae 2151=back
1f1031fe 2152
19799a22 2153=head1 BUGS
2154
f253210b 2155In a bracketed character class with case insensitive matching, ranges only work
2156for ASCII characters. For example,
2157C<m/[\N{CYRILLIC CAPITAL LETTER A}-\N{CYRILLIC CAPITAL LETTER YA}]/i>
2158doesn't match all the Russian upper and lower case letters.
2159
9da458fc 2160This document varies from difficult to understand to completely
2161and utterly opaque. The wandering prose riddled with jargon is
2162hard to fathom in several places.
2163
2164This document needs a rewrite that separates the tutorial content
2165from the reference content.
19799a22 2166
2167=head1 SEE ALSO
9fa51da4 2168
91e0c79e 2169L<perlrequick>.
2170
2171L<perlretut>.
2172
9b599b2a 2173L<perlop/"Regexp Quote-Like Operators">.
2174
1e66bd83 2175L<perlop/"Gory details of parsing quoted constructs">.
2176
14218588 2177L<perlfaq6>.
2178
9b599b2a 2179L<perlfunc/pos>.
2180
2181L<perllocale>.
2182
fb55449c 2183L<perlebcdic>.
2184
14218588 2185I<Mastering Regular Expressions> by Jeffrey Friedl, published
2186by O'Reilly and Associates.