3 perlreref - Perl Regular Expressions Reference
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.
13 =~ determines to which variable the regex is applied.
14 In its absence, $_ is used.
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.
24 m/pattern/igmsoxc searches a string for a pattern match,
25 applying the given options.
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
43 s/pattern/replacement/igmsoxe substitutes matches of
44 'pattern' with 'replacement'. Modifiers as for m//
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>.
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.
81 \038 Any octal ASCII value
82 \x7f Any hexadecimal ASCII value
83 \x{263a} A wide hexadecimal value
85 \N{name} A named character
87 \l Lowercase next character
88 \u Uppercase next character
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 work within or without a character class:
109 \d A digit, same as [0-9]
110 \D A nondigit, same as [^0-9]
111 \w A word character (alphanumeric), same as [a-zA-Z0-9_]
112 \W A non-word character, [^a-zA-Z0-9_]
113 \s A whitespace character, same as [ \t\n\r\f]
114 \S A non-whitespace character, [^ \t\n\r\f]
115 \C Match a byte (with Unicode, '.' matches char)
116 \pP Match P-named (Unicode) property
117 \p{...} Match Unicode property with long name
119 \P{...} Match lack of Unicode property with long name
120 \X Match extended unicode sequence
122 POSIX character classes and their Unicode and Perl equivalents:
124 alnum IsAlnum Alphanumeric
125 alpha IsAlpha Alphabetic
126 ascii IsASCII Any ASCII char
127 blank IsSpace [ \t] Horizontal whitespace (GNU)
128 cntrl IsCntrl Control characters
129 digit IsDigit \d Digits
130 graph IsGraph Alphanumeric and punctuation
131 lower IsLower Lowercase chars (locale aware)
132 print IsPrint Alphanumeric, punct, and space
133 punct IsPunct Punctuation
134 space IsSpace [\s\ck] Whitespace
135 IsSpacePerl \s Perl's whitespace definition
136 upper IsUpper Uppercase chars (locale aware)
137 word IsWord \w Alphanumeric plus _ (Perl)
138 xdigit IsXDigit [\dA-Fa-f] Hexadecimal digit
140 Within a character class:
142 POSIX traditional Unicode
143 [:digit:] \d \p{IsDigit}
144 [:^digit:] \D \P{IsDigit}
148 All are zero-width assertions.
150 ^ Match string start (or line, if /m is used)
151 $ Match string end (or line, if /m is used) or before newline
152 \b Match word boundary (between \w and \W)
153 \B Match except at word boundary (between \w and \w or \W and \W)
154 \A Match string start (regardless of /m)
155 \Z Match string end (before optional newline)
156 \z Match absolute string end
157 \G Match where previous m//g left off
161 Quantifiers are greedy by default -- match the B<longest> leftmost.
163 Maximal Minimal Allowed range
164 ------- ------- -------------
165 {n,m} {n,m}? Must occur at least n times but no more than m times
166 {n,} {n,}? Must occur at least n times
167 {n} {n}? Must occur exactly n times
168 * *? 0 or more times (same as {0,})
169 + +? 1 or more times (same as {1,})
170 ? ?? 0 or 1 time (same as {0,1})
172 There is no quantifier {,n} -- that gets understood as a literal string.
174 =head2 EXTENDED CONSTRUCTS
177 (?imxs-imsx:...) Enable/disable option (as per m// modifiers)
178 (?=...) Zero-width positive lookahead assertion
179 (?!...) Zero-width negative lookahead assertion
180 (?<=...) Zero-width positive lookbehind assertion
181 (?<!...) Zero-width negative lookbehind assertion
182 (?>...) Grab what we can, prohibit backtracking
183 (?{ code }) Embedded code, return value becomes $^R
184 (??{ code }) Dynamic regex, return value used as regex
185 (?(cond)yes|no) cond being integer corresponding to capturing parens
186 (?(cond)yes) or a lookaround/eval zero-width assertion
190 $_ Default variable for operators to use
191 $* Enable multiline matching (deprecated; not in 5.9.0 or later)
193 $& Entire matched string
194 $` Everything prior to matched string
195 $' Everything after to matched string
197 The use of those last three will slow down B<all> regex use
198 within your program. Consult L<perlvar> for C<@LAST_MATCH_START>
199 to see equivalent expressions that won't cause slow down.
200 See also L<Devel::SawAmpersand>.
202 $1, $2 ... hold the Xth captured expr
203 $+ Last parenthesized pattern match
204 $^N Holds the most recently closed capture
205 $^R Holds the result of the last (?{...}) expr
206 @- Offsets of starts of groups. $-[0] holds start of whole match
207 @+ Offsets of ends of groups. $+[0] holds end of whole match
209 Captured groups are numbered according to their I<opening> paren.
213 lc Lowercase a string
214 lcfirst Lowercase first char of a string
215 uc Uppercase a string
216 ucfirst Titlecase first char of a string
218 pos Return or set current match position
219 quotemeta Quote metacharacters
220 reset Reset ?pattern? status
221 study Analyze string for optimizing matching
223 split Use regex to split a string into parts
225 The first four of these are identical to the escape sequences \l, \u,
226 \L, and \U. For Titlecase, see L</Titlecase>.
232 Unicode concept which most often is equal to uppercase, but for
233 certain characters like the German "sharp s" there is a difference.
239 This document may be distributed under the same terms as Perl itself.
247 L<perlretut> for a tutorial on regular expressions.
251 L<perlrequick> for a rapid tutorial.
255 L<perlre> for more details.
259 L<perlvar> for details on the variables.
263 L<perlop> for details on the operators.
267 L<perlfunc> for details on the functions.
271 L<perlfaq6> for FAQs on regular expressions.
275 The L<re> module to alter behaviour and aid
280 L<perldebug/"Debugging regular expressions">
284 L<perluniintro>, L<perlunicode>, L<charnames> and L<locale>
285 for details on regexes and internationalisation.
289 I<Mastering Regular Expressions> by Jeffrey Friedl
290 (F<http://regex.info/>) for a thorough grounding and
291 reference on the topic.