Track /etc/gitconfig
[msysgit/mtrensch.git] / lib / perl5 / 5.8.8 / pods / perlreref.pod
blob8a793c89b69cdb47decf60d3ccce57a430911400
1 =head1 NAME
3 perlreref - Perl Regular Expressions Reference
5 =head1 DESCRIPTION
7 This is a quick reference to Perl's regular expressions.
8 For full information see L<perlre> and L<perlop>, as well
9 as the L</"SEE ALSO"> section in this document.
11 =head2 OPERATORS
13   =~ determines to which variable the regex is applied.
14      In its absence, $_ is used.
16         $var =~ /foo/;
18   !~ determines to which variable the regex is applied,
19      and negates the result of the match; it returns
20      false if the match succeeds, and true if it fails.
22        $var !~ /foo/;
24   m/pattern/igmsoxc searches a string for a pattern match,
25      applying the given options.
27         i  case-Insensitive
28         g  Global - all occurrences
29         m  Multiline mode - ^ and $ match internal lines
30         s  match as a Single line - . matches \n
31         o  compile pattern Once
32         x  eXtended legibility - free whitespace and comments
33         c  don't reset pos on failed matches when using /g
35      If 'pattern' is an empty string, the last I<successfully> matched
36      regex is used. Delimiters other than '/' may be used for both this
37      operator and the following ones.
39   qr/pattern/imsox lets you store a regex in a variable,
40      or pass one around. Modifiers as for m// and are stored
41      within the regex.
43   s/pattern/replacement/igmsoxe substitutes matches of
44      'pattern' with 'replacement'. Modifiers as for m//
45      with one addition:
47         e  Evaluate replacement as an expression
49      'e' may be specified multiple times. 'replacement' is interpreted
50      as a double quoted string unless a single-quote (') is the delimiter.
52   ?pattern? is like m/pattern/ but matches only once. No alternate
53       delimiters can be used. Must be reset with L<reset|perlfunc/reset>.
55 =head2 SYNTAX
57    \       Escapes the character immediately following it
58    .       Matches any single character except a newline (unless /s is used)
59    ^       Matches at the beginning of the string (or line, if /m is used)
60    $       Matches at the end of the string (or line, if /m is used)
61    *       Matches the preceding element 0 or more times
62    +       Matches the preceding element 1 or more times
63    ?       Matches the preceding element 0 or 1 times
64    {...}   Specifies a range of occurrences for the element preceding it
65    [...]   Matches any one of the characters contained within the brackets
66    (...)   Groups subexpressions for capturing to $1, $2...
67    (?:...) Groups subexpressions without capturing (cluster)
68    |       Matches either the subexpression preceding or following it
69    \1, \2 ...  The text from the Nth group
71 =head2 ESCAPE SEQUENCES
73 These work as in normal strings.
75    \a       Alarm (beep)
76    \e       Escape
77    \f       Formfeed
78    \n       Newline
79    \r       Carriage return
80    \t       Tab
81    \037     Any octal ASCII value
82    \x7f     Any hexadecimal ASCII value
83    \x{263a} A wide hexadecimal value
84    \cx      Control-x
85    \N{name} A named character
87    \l  Lowercase next character
88    \u  Titlecase next character
89    \L  Lowercase until \E
90    \U  Uppercase until \E
91    \Q  Disable pattern metacharacters until \E
92    \E  End case modification
94 For Titlecase, see L</Titlecase>.
96 This one works differently from normal strings:
98    \b  An assertion, not backspace, except in a character class
100 =head2 CHARACTER CLASSES
102    [amy]    Match 'a', 'm' or 'y'
103    [f-j]    Dash specifies "range"
104    [f-j-]   Dash escaped or at start or end means 'dash'
105    [^f-j]   Caret indicates "match any character _except_ these"
107 The following sequences work within or without a character class.
108 The first six are locale aware, all are Unicode aware.  The default
109 character class equivalent are given.  See L<perllocale> and
110 L<perlunicode> for details.
112    \d      A digit                     [0-9]
113    \D      A nondigit                  [^0-9]
114    \w      A word character            [a-zA-Z0-9_]
115    \W      A non-word character        [^a-zA-Z0-9_]
116    \s      A whitespace character      [ \t\n\r\f]
117    \S      A non-whitespace character  [^ \t\n\r\f]
119    \C      Match a byte (with Unicode, '.' matches a character)
120    \pP     Match P-named (Unicode) property
121    \p{...} Match Unicode property with long name
122    \PP     Match non-P
123    \P{...} Match lack of Unicode property with long name
124    \X      Match extended unicode sequence
126 POSIX character classes and their Unicode and Perl equivalents:
128    alnum   IsAlnum              Alphanumeric
129    alpha   IsAlpha              Alphabetic
130    ascii   IsASCII              Any ASCII char
131    blank   IsSpace  [ \t]       Horizontal whitespace (GNU extension)
132    cntrl   IsCntrl              Control characters
133    digit   IsDigit  \d          Digits
134    graph   IsGraph              Alphanumeric and punctuation
135    lower   IsLower              Lowercase chars (locale and Unicode aware)
136    print   IsPrint              Alphanumeric, punct, and space
137    punct   IsPunct              Punctuation
138    space   IsSpace  [\s\ck]     Whitespace
139            IsSpacePerl   \s     Perl's whitespace definition
140    upper   IsUpper              Uppercase chars (locale and Unicode aware)
141    word    IsWord   \w          Alphanumeric plus _ (Perl extension)
142    xdigit  IsXDigit [0-9A-Fa-f] Hexadecimal digit
144 Within a character class:
146     POSIX       traditional   Unicode
147     [:digit:]       \d        \p{IsDigit}
148     [:^digit:]      \D        \P{IsDigit}
150 =head2 ANCHORS
152 All are zero-width assertions.
154    ^  Match string start (or line, if /m is used)
155    $  Match string end (or line, if /m is used) or before newline
156    \b Match word boundary (between \w and \W)
157    \B Match except at word boundary (between \w and \w or \W and \W)
158    \A Match string start (regardless of /m)
159    \Z Match string end (before optional newline)
160    \z Match absolute string end
161    \G Match where previous m//g left off
163 =head2 QUANTIFIERS
165 Quantifiers are greedy by default -- match the B<longest> leftmost.
167    Maximal Minimal Allowed range
168    ------- ------- -------------
169    {n,m}   {n,m}?  Must occur at least n times but no more than m times
170    {n,}    {n,}?   Must occur at least n times
171    {n}     {n}?    Must occur exactly n times
172    *       *?      0 or more times (same as {0,})
173    +       +?      1 or more times (same as {1,})
174    ?       ??      0 or 1 time (same as {0,1})
176 There is no quantifier {,n} -- that gets understood as a literal string.
178 =head2 EXTENDED CONSTRUCTS
180    (?#text)         A comment
181    (?imxs-imsx:...) Enable/disable option (as per m// modifiers)
182    (?=...)          Zero-width positive lookahead assertion
183    (?!...)          Zero-width negative lookahead assertion
184    (?<=...)         Zero-width positive lookbehind assertion
185    (?<!...)         Zero-width negative lookbehind assertion
186    (?>...)          Grab what we can, prohibit backtracking
187    (?{ code })      Embedded code, return value becomes $^R
188    (??{ code })     Dynamic regex, return value used as regex
189    (?(cond)yes|no)  cond being integer corresponding to capturing parens
190    (?(cond)yes)        or a lookaround/eval zero-width assertion
192 =head2 VARIABLES
194    $_    Default variable for operators to use
195    $*    Enable multiline matching (deprecated; not in 5.9.0 or later)
197    $&    Entire matched string
198    $`    Everything prior to matched string
199    $'    Everything after to matched string
201 The use of those last three will slow down B<all> regex use
202 within your program. Consult L<perlvar> for C<@LAST_MATCH_START>
203 to see equivalent expressions that won't cause slow down.
204 See also L<Devel::SawAmpersand>.
206    $1, $2 ...  hold the Xth captured expr
207    $+    Last parenthesized pattern match
208    $^N   Holds the most recently closed capture
209    $^R   Holds the result of the last (?{...}) expr
210    @-    Offsets of starts of groups. $-[0] holds start of whole match
211    @+    Offsets of ends of groups. $+[0] holds end of whole match
213 Captured groups are numbered according to their I<opening> paren.
215 =head2 FUNCTIONS
217    lc          Lowercase a string
218    lcfirst     Lowercase first char of a string
219    uc          Uppercase a string
220    ucfirst     Titlecase first char of a string
222    pos         Return or set current match position
223    quotemeta   Quote metacharacters
224    reset       Reset ?pattern? status
225    study       Analyze string for optimizing matching
227    split       Use regex to split a string into parts
229 The first four of these are like the escape sequences C<\L>, C<\l>,
230 C<\U>, and C<\u>.  For Titlecase, see L</Titlecase>.
232 =head2 TERMINOLOGY
234 =head3 Titlecase
236 Unicode concept which most often is equal to uppercase, but for
237 certain characters like the German "sharp s" there is a difference.
239 =head1 AUTHOR
241 Iain Truskett.
243 This document may be distributed under the same terms as Perl itself.
245 =head1 SEE ALSO
247 =over 4
249 =item *
251 L<perlretut> for a tutorial on regular expressions.
253 =item *
255 L<perlrequick> for a rapid tutorial.
257 =item *
259 L<perlre> for more details.
261 =item *
263 L<perlvar> for details on the variables.
265 =item *
267 L<perlop> for details on the operators.
269 =item *
271 L<perlfunc> for details on the functions.
273 =item *
275 L<perlfaq6> for FAQs on regular expressions.
277 =item *
279 The L<re> module to alter behaviour and aid
280 debugging.
282 =item *
284 L<perldebug/"Debugging regular expressions">
286 =item *
288 L<perluniintro>, L<perlunicode>, L<charnames> and L<locale>
289 for details on regexes and internationalisation.
291 =item *
293 I<Mastering Regular Expressions> by Jeffrey Friedl
294 (F<http://regex.info/>) for a thorough grounding and
295 reference on the topic.
297 =back
299 =head1 THANKS
301 David P.C. Wollmann,
302 Richard Soderberg,
303 Sean M. Burke,
304 Tom Christiansen,
305 Jim Cromie,
307 Jeffrey Goff
308 for useful advice.
310 =cut