~dkuhlman/python-training-materials/Materials

« back to all changes in this revision

Viewing changes to python-3.5.1-docs-html/_sources/library/re.txt

  • Committer: Dave Kuhlman
  • Date: 2017-04-15 16:24:56 UTC
  • Revision ID: dkuhlman@davekuhlman.org-20170415162456-iav9vozzg4iwqwv3
Updated docs

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
:mod:`re` --- Regular expression operations
2
 
===========================================
3
 
 
4
 
.. module:: re
5
 
   :synopsis: Regular expression operations.
6
 
.. moduleauthor:: Fredrik Lundh <fredrik@pythonware.com>
7
 
.. sectionauthor:: Andrew M. Kuchling <amk@amk.ca>
8
 
 
9
 
 
10
 
This module provides regular expression matching operations similar to
11
 
those found in Perl.
12
 
 
13
 
Both patterns and strings to be searched can be Unicode strings as well as
14
 
8-bit strings. However, Unicode strings and 8-bit strings cannot be mixed:
15
 
that is, you cannot match an Unicode string with a byte pattern or
16
 
vice-versa; similarly, when asking for a substitution, the replacement
17
 
string must be of the same type as both the pattern and the search string.
18
 
 
19
 
Regular expressions use the backslash character (``'\'``) to indicate
20
 
special forms or to allow special characters to be used without invoking
21
 
their special meaning.  This collides with Python's usage of the same
22
 
character for the same purpose in string literals; for example, to match
23
 
a literal backslash, one might have to write ``'\\\\'`` as the pattern
24
 
string, because the regular expression must be ``\\``, and each
25
 
backslash must be expressed as ``\\`` inside a regular Python string
26
 
literal.
27
 
 
28
 
The solution is to use Python's raw string notation for regular expression
29
 
patterns; backslashes are not handled in any special way in a string literal
30
 
prefixed with ``'r'``.  So ``r"\n"`` is a two-character string containing
31
 
``'\'`` and ``'n'``, while ``"\n"`` is a one-character string containing a
32
 
newline.  Usually patterns will be expressed in Python code using this raw
33
 
string notation.
34
 
 
35
 
It is important to note that most regular expression operations are available as
36
 
module-level functions and methods on
37
 
:ref:`compiled regular expressions <re-objects>`.  The functions are shortcuts
38
 
that don't require you to compile a regex object first, but miss some
39
 
fine-tuning parameters.
40
 
 
41
 
 
42
 
.. _re-syntax:
43
 
 
44
 
Regular Expression Syntax
45
 
-------------------------
46
 
 
47
 
A regular expression (or RE) specifies a set of strings that matches it; the
48
 
functions in this module let you check if a particular string matches a given
49
 
regular expression (or if a given regular expression matches a particular
50
 
string, which comes down to the same thing).
51
 
 
52
 
Regular expressions can be concatenated to form new regular expressions; if *A*
53
 
and *B* are both regular expressions, then *AB* is also a regular expression.
54
 
In general, if a string *p* matches *A* and another string *q* matches *B*, the
55
 
string *pq* will match AB.  This holds unless *A* or *B* contain low precedence
56
 
operations; boundary conditions between *A* and *B*; or have numbered group
57
 
references.  Thus, complex expressions can easily be constructed from simpler
58
 
primitive expressions like the ones described here.  For details of the theory
59
 
and implementation of regular expressions, consult the Friedl book referenced
60
 
above, or almost any textbook about compiler construction.
61
 
 
62
 
A brief explanation of the format of regular expressions follows.  For further
63
 
information and a gentler presentation, consult the :ref:`regex-howto`.
64
 
 
65
 
Regular expressions can contain both special and ordinary characters. Most
66
 
ordinary characters, like ``'A'``, ``'a'``, or ``'0'``, are the simplest regular
67
 
expressions; they simply match themselves.  You can concatenate ordinary
68
 
characters, so ``last`` matches the string ``'last'``.  (In the rest of this
69
 
section, we'll write RE's in ``this special style``, usually without quotes, and
70
 
strings to be matched ``'in single quotes'``.)
71
 
 
72
 
Some characters, like ``'|'`` or ``'('``, are special. Special
73
 
characters either stand for classes of ordinary characters, or affect
74
 
how the regular expressions around them are interpreted. Regular
75
 
expression pattern strings may not contain null bytes, but can specify
76
 
the null byte using a ``\number`` notation such as ``'\x00'``.
77
 
 
78
 
 
79
 
The special characters are:
80
 
 
81
 
``'.'``
82
 
   (Dot.)  In the default mode, this matches any character except a newline.  If
83
 
   the :const:`DOTALL` flag has been specified, this matches any character
84
 
   including a newline.
85
 
 
86
 
``'^'``
87
 
   (Caret.)  Matches the start of the string, and in :const:`MULTILINE` mode also
88
 
   matches immediately after each newline.
89
 
 
90
 
``'$'``
91
 
   Matches the end of the string or just before the newline at the end of the
92
 
   string, and in :const:`MULTILINE` mode also matches before a newline.  ``foo``
93
 
   matches both 'foo' and 'foobar', while the regular expression ``foo$`` matches
94
 
   only 'foo'.  More interestingly, searching for ``foo.$`` in ``'foo1\nfoo2\n'``
95
 
   matches 'foo2' normally, but 'foo1' in :const:`MULTILINE` mode; searching for
96
 
   a single ``$`` in ``'foo\n'`` will find two (empty) matches: one just before
97
 
   the newline, and one at the end of the string.
98
 
 
99
 
``'*'``
100
 
   Causes the resulting RE to match 0 or more repetitions of the preceding RE, as
101
 
   many repetitions as are possible.  ``ab*`` will match 'a', 'ab', or 'a' followed
102
 
   by any number of 'b's.
103
 
 
104
 
``'+'``
105
 
   Causes the resulting RE to match 1 or more repetitions of the preceding RE.
106
 
   ``ab+`` will match 'a' followed by any non-zero number of 'b's; it will not
107
 
   match just 'a'.
108
 
 
109
 
``'?'``
110
 
   Causes the resulting RE to match 0 or 1 repetitions of the preceding RE.
111
 
   ``ab?`` will match either 'a' or 'ab'.
112
 
 
113
 
``*?``, ``+?``, ``??``
114
 
   The ``'*'``, ``'+'``, and ``'?'`` qualifiers are all :dfn:`greedy`; they match
115
 
   as much text as possible.  Sometimes this behaviour isn't desired; if the RE
116
 
   ``<.*>`` is matched against ``'<H1>title</H1>'``, it will match the entire
117
 
   string, and not just ``'<H1>'``.  Adding ``'?'`` after the qualifier makes it
118
 
   perform the match in :dfn:`non-greedy` or :dfn:`minimal` fashion; as *few*
119
 
   characters as possible will be matched.  Using ``.*?`` in the previous
120
 
   expression will match only ``'<H1>'``.
121
 
 
122
 
``{m}``
123
 
   Specifies that exactly *m* copies of the previous RE should be matched; fewer
124
 
   matches cause the entire RE not to match.  For example, ``a{6}`` will match
125
 
   exactly six ``'a'`` characters, but not five.
126
 
 
127
 
``{m,n}``
128
 
   Causes the resulting RE to match from *m* to *n* repetitions of the preceding
129
 
   RE, attempting to match as many repetitions as possible.  For example,
130
 
   ``a{3,5}`` will match from 3 to 5 ``'a'`` characters.  Omitting *m* specifies a
131
 
   lower bound of zero,  and omitting *n* specifies an infinite upper bound.  As an
132
 
   example, ``a{4,}b`` will match ``aaaab`` or a thousand ``'a'`` characters
133
 
   followed by a ``b``, but not ``aaab``. The comma may not be omitted or the
134
 
   modifier would be confused with the previously described form.
135
 
 
136
 
``{m,n}?``
137
 
   Causes the resulting RE to match from *m* to *n* repetitions of the preceding
138
 
   RE, attempting to match as *few* repetitions as possible.  This is the
139
 
   non-greedy version of the previous qualifier.  For example, on the
140
 
   6-character string ``'aaaaaa'``, ``a{3,5}`` will match 5 ``'a'`` characters,
141
 
   while ``a{3,5}?`` will only match 3 characters.
142
 
 
143
 
``'\'``
144
 
   Either escapes special characters (permitting you to match characters like
145
 
   ``'*'``, ``'?'``, and so forth), or signals a special sequence; special
146
 
   sequences are discussed below.
147
 
 
148
 
   If you're not using a raw string to express the pattern, remember that Python
149
 
   also uses the backslash as an escape sequence in string literals; if the escape
150
 
   sequence isn't recognized by Python's parser, the backslash and subsequent
151
 
   character are included in the resulting string.  However, if Python would
152
 
   recognize the resulting sequence, the backslash should be repeated twice.  This
153
 
   is complicated and hard to understand, so it's highly recommended that you use
154
 
   raw strings for all but the simplest expressions.
155
 
 
156
 
``[]``
157
 
   Used to indicate a set of characters.  In a set:
158
 
 
159
 
   * Characters can be listed individually, e.g. ``[amk]`` will match ``'a'``,
160
 
     ``'m'``, or ``'k'``.
161
 
 
162
 
   * Ranges of characters can be indicated by giving two characters and separating
163
 
     them by a ``'-'``, for example ``[a-z]`` will match any lowercase ASCII letter,
164
 
     ``[0-5][0-9]`` will match all the two-digits numbers from ``00`` to ``59``, and
165
 
     ``[0-9A-Fa-f]`` will match any hexadecimal digit.  If ``-`` is escaped (e.g.
166
 
     ``[a\-z]``) or if it's placed as the first or last character (e.g. ``[a-]``),
167
 
     it will match a literal ``'-'``.
168
 
 
169
 
   * Special characters lose their special meaning inside sets.  For example,
170
 
     ``[(+*)]`` will match any of the literal characters ``'('``, ``'+'``,
171
 
     ``'*'``, or ``')'``.
172
 
 
173
 
   * Character classes such as ``\w`` or ``\S`` (defined below) are also accepted
174
 
     inside a set, although the characters they match depends on whether
175
 
     :const:`ASCII` or :const:`LOCALE` mode is in force.
176
 
 
177
 
   * Characters that are not within a range can be matched by :dfn:`complementing`
178
 
     the set.  If the first character of the set is ``'^'``, all the characters
179
 
     that are *not* in the set will be matched.  For example, ``[^5]`` will match
180
 
     any character except ``'5'``, and ``[^^]`` will match any character except
181
 
     ``'^'``.  ``^`` has no special meaning if it's not the first character in
182
 
     the set.
183
 
 
184
 
   * To match a literal ``']'`` inside a set, precede it with a backslash, or
185
 
     place it at the beginning of the set.  For example, both ``[()[\]{}]`` and
186
 
     ``[]()[{}]`` will both match a parenthesis.
187
 
 
188
 
``'|'``
189
 
   ``A|B``, where A and B can be arbitrary REs, creates a regular expression that
190
 
   will match either A or B.  An arbitrary number of REs can be separated by the
191
 
   ``'|'`` in this way.  This can be used inside groups (see below) as well.  As
192
 
   the target string is scanned, REs separated by ``'|'`` are tried from left to
193
 
   right. When one pattern completely matches, that branch is accepted. This means
194
 
   that once ``A`` matches, ``B`` will not be tested further, even if it would
195
 
   produce a longer overall match.  In other words, the ``'|'`` operator is never
196
 
   greedy.  To match a literal ``'|'``, use ``\|``, or enclose it inside a
197
 
   character class, as in ``[|]``.
198
 
 
199
 
``(...)``
200
 
   Matches whatever regular expression is inside the parentheses, and indicates the
201
 
   start and end of a group; the contents of a group can be retrieved after a match
202
 
   has been performed, and can be matched later in the string with the ``\number``
203
 
   special sequence, described below.  To match the literals ``'('`` or ``')'``,
204
 
   use ``\(`` or ``\)``, or enclose them inside a character class: ``[(] [)]``.
205
 
 
206
 
``(?...)``
207
 
   This is an extension notation (a ``'?'`` following a ``'('`` is not meaningful
208
 
   otherwise).  The first character after the ``'?'`` determines what the meaning
209
 
   and further syntax of the construct is. Extensions usually do not create a new
210
 
   group; ``(?P<name>...)`` is the only exception to this rule. Following are the
211
 
   currently supported extensions.
212
 
 
213
 
``(?aiLmsux)``
214
 
   (One or more letters from the set ``'a'``, ``'i'``, ``'L'``, ``'m'``,
215
 
   ``'s'``, ``'u'``, ``'x'``.)  The group matches the empty string; the
216
 
   letters set the corresponding flags: :const:`re.A` (ASCII-only matching),
217
 
   :const:`re.I` (ignore case), :const:`re.L` (locale dependent),
218
 
   :const:`re.M` (multi-line), :const:`re.S` (dot matches all),
219
 
   and :const:`re.X` (verbose), for the entire regular expression. (The
220
 
   flags are described in :ref:`contents-of-module-re`.) This
221
 
   is useful if you wish to include the flags as part of the regular
222
 
   expression, instead of passing a *flag* argument to the
223
 
   :func:`re.compile` function.
224
 
 
225
 
   Note that the ``(?x)`` flag changes how the expression is parsed. It should be
226
 
   used first in the expression string, or after one or more whitespace characters.
227
 
   If there are non-whitespace characters before the flag, the results are
228
 
   undefined.
229
 
 
230
 
``(?:...)``
231
 
   A non-capturing version of regular parentheses.  Matches whatever regular
232
 
   expression is inside the parentheses, but the substring matched by the group
233
 
   *cannot* be retrieved after performing a match or referenced later in the
234
 
   pattern.
235
 
 
236
 
``(?P<name>...)``
237
 
   Similar to regular parentheses, but the substring matched by the group is
238
 
   accessible via the symbolic group name *name*.  Group names must be valid
239
 
   Python identifiers, and each group name must be defined only once within a
240
 
   regular expression.  A symbolic group is also a numbered group, just as if
241
 
   the group were not named.
242
 
 
243
 
   Named groups can be referenced in three contexts.  If the pattern is
244
 
   ``(?P<quote>['"]).*?(?P=quote)`` (i.e. matching a string quoted with either
245
 
   single or double quotes):
246
 
 
247
 
   +---------------------------------------+----------------------------------+
248
 
   | Context of reference to group "quote" | Ways to reference it             |
249
 
   +=======================================+==================================+
250
 
   | in the same pattern itself            | * ``(?P=quote)`` (as shown)      |
251
 
   |                                       | * ``\1``                         |
252
 
   +---------------------------------------+----------------------------------+
253
 
   | when processing match object ``m``    | * ``m.group('quote')``           |
254
 
   |                                       | * ``m.end('quote')`` (etc.)      |
255
 
   +---------------------------------------+----------------------------------+
256
 
   | in a string passed to the ``repl``    | * ``\g<quote>``                  |
257
 
   | argument of ``re.sub()``              | * ``\g<1>``                      |
258
 
   |                                       | * ``\1``                         |
259
 
   +---------------------------------------+----------------------------------+
260
 
 
261
 
``(?P=name)``
262
 
   A backreference to a named group; it matches whatever text was matched by the
263
 
   earlier group named *name*.
264
 
 
265
 
``(?#...)``
266
 
   A comment; the contents of the parentheses are simply ignored.
267
 
 
268
 
``(?=...)``
269
 
   Matches if ``...`` matches next, but doesn't consume any of the string.  This is
270
 
   called a lookahead assertion.  For example, ``Isaac (?=Asimov)`` will match
271
 
   ``'Isaac '`` only if it's followed by ``'Asimov'``.
272
 
 
273
 
``(?!...)``
274
 
   Matches if ``...`` doesn't match next.  This is a negative lookahead assertion.
275
 
   For example, ``Isaac (?!Asimov)`` will match ``'Isaac '`` only if it's *not*
276
 
   followed by ``'Asimov'``.
277
 
 
278
 
``(?<=...)``
279
 
   Matches if the current position in the string is preceded by a match for ``...``
280
 
   that ends at the current position.  This is called a :dfn:`positive lookbehind
281
 
   assertion`. ``(?<=abc)def`` will find a match in ``abcdef``, since the
282
 
   lookbehind will back up 3 characters and check if the contained pattern matches.
283
 
   The contained pattern must only match strings of some fixed length, meaning that
284
 
   ``abc`` or ``a|b`` are allowed, but ``a*`` and ``a{3,4}`` are not.  Note that
285
 
   patterns which start with positive lookbehind assertions will not match at the
286
 
   beginning of the string being searched; you will most likely want to use the
287
 
   :func:`search` function rather than the :func:`match` function:
288
 
 
289
 
      >>> import re
290
 
      >>> m = re.search('(?<=abc)def', 'abcdef')
291
 
      >>> m.group(0)
292
 
      'def'
293
 
 
294
 
   This example looks for a word following a hyphen:
295
 
 
296
 
      >>> m = re.search('(?<=-)\w+', 'spam-egg')
297
 
      >>> m.group(0)
298
 
      'egg'
299
 
 
300
 
   .. versionchanged: 3.5
301
 
      Added support for group references of fixed length.
302
 
 
303
 
``(?<!...)``
304
 
   Matches if the current position in the string is not preceded by a match for
305
 
   ``...``.  This is called a :dfn:`negative lookbehind assertion`.  Similar to
306
 
   positive lookbehind assertions, the contained pattern must only match strings of
307
 
   some fixed length.  Patterns which start with negative lookbehind assertions may
308
 
   match at the beginning of the string being searched.
309
 
 
310
 
``(?(id/name)yes-pattern|no-pattern)``
311
 
   Will try to match with ``yes-pattern`` if the group with given *id* or
312
 
   *name* exists, and with ``no-pattern`` if it doesn't. ``no-pattern`` is
313
 
   optional and can be omitted. For example,
314
 
   ``(<)?(\w+@\w+(?:\.\w+)+)(?(1)>|$)`` is a poor email matching pattern, which
315
 
   will match with ``'<user@host.com>'`` as well as ``'user@host.com'``, but
316
 
   not with ``'<user@host.com'`` nor ``'user@host.com>'``.
317
 
 
318
 
 
319
 
The special sequences consist of ``'\'`` and a character from the list below.
320
 
If the ordinary character is not on the list, then the resulting RE will match
321
 
the second character.  For example, ``\$`` matches the character ``'$'``.
322
 
 
323
 
``\number``
324
 
   Matches the contents of the group of the same number.  Groups are numbered
325
 
   starting from 1.  For example, ``(.+) \1`` matches ``'the the'`` or ``'55 55'``,
326
 
   but not ``'thethe'`` (note the space after the group).  This special sequence
327
 
   can only be used to match one of the first 99 groups.  If the first digit of
328
 
   *number* is 0, or *number* is 3 octal digits long, it will not be interpreted as
329
 
   a group match, but as the character with octal value *number*. Inside the
330
 
   ``'['`` and ``']'`` of a character class, all numeric escapes are treated as
331
 
   characters.
332
 
 
333
 
``\A``
334
 
   Matches only at the start of the string.
335
 
 
336
 
``\b``
337
 
   Matches the empty string, but only at the beginning or end of a word.
338
 
   A word is defined as a sequence of Unicode alphanumeric or underscore
339
 
   characters, so the end of a word is indicated by whitespace or a
340
 
   non-alphanumeric, non-underscore Unicode character.  Note that formally,
341
 
   ``\b`` is defined as the boundary between a ``\w`` and a ``\W`` character
342
 
   (or vice versa), or between ``\w`` and the beginning/end of the string.
343
 
   This means that ``r'\bfoo\b'`` matches ``'foo'``, ``'foo.'``, ``'(foo)'``,
344
 
   ``'bar foo baz'`` but not ``'foobar'`` or ``'foo3'``.
345
 
 
346
 
   By default Unicode alphanumerics are the ones used, but this can  be changed
347
 
   by using the :const:`ASCII` flag.  Inside a character range, ``\b``
348
 
   represents the backspace character, for compatibility with Python's string
349
 
   literals.
350
 
 
351
 
``\B``
352
 
   Matches the empty string, but only when it is *not* at the beginning or end
353
 
   of a word.  This means that ``r'py\B'`` matches ``'python'``, ``'py3'``,
354
 
   ``'py2'``, but not ``'py'``, ``'py.'``, or ``'py!'``.
355
 
   ``\B`` is just the opposite of ``\b``, so word characters are
356
 
   Unicode alphanumerics or the underscore, although this can be changed
357
 
   by using the :const:`ASCII` flag.
358
 
 
359
 
``\d``
360
 
   For Unicode (str) patterns:
361
 
      Matches any Unicode decimal digit (that is, any character in
362
 
      Unicode character category [Nd]).  This includes ``[0-9]``, and
363
 
      also many other digit characters.  If the :const:`ASCII` flag is
364
 
      used only ``[0-9]`` is matched (but the flag affects the entire
365
 
      regular expression, so in such cases using an explicit ``[0-9]``
366
 
      may be a better choice).
367
 
   For 8-bit (bytes) patterns:
368
 
      Matches any decimal digit; this is equivalent to ``[0-9]``.
369
 
 
370
 
``\D``
371
 
   Matches any character which is not a Unicode decimal digit. This is
372
 
   the opposite of ``\d``. If the :const:`ASCII` flag is used this
373
 
   becomes the equivalent of ``[^0-9]`` (but the flag affects the entire
374
 
   regular expression, so in such cases using an explicit ``[^0-9]`` may
375
 
   be a better choice).
376
 
 
377
 
``\s``
378
 
   For Unicode (str) patterns:
379
 
      Matches Unicode whitespace characters (which includes
380
 
      ``[ \t\n\r\f\v]``, and also many other characters, for example the
381
 
      non-breaking spaces mandated by typography rules in many
382
 
      languages). If the :const:`ASCII` flag is used, only
383
 
      ``[ \t\n\r\f\v]`` is matched (but the flag affects the entire
384
 
      regular expression, so in such cases using an explicit
385
 
      ``[ \t\n\r\f\v]`` may be a better choice).
386
 
 
387
 
   For 8-bit (bytes) patterns:
388
 
      Matches characters considered whitespace in the ASCII character set;
389
 
      this is equivalent to ``[ \t\n\r\f\v]``.
390
 
 
391
 
``\S``
392
 
   Matches any character which is not a Unicode whitespace character. This is
393
 
   the opposite of ``\s``. If the :const:`ASCII` flag is used this
394
 
   becomes the equivalent of ``[^ \t\n\r\f\v]`` (but the flag affects the entire
395
 
   regular expression, so in such cases using an explicit ``[^ \t\n\r\f\v]`` may
396
 
   be a better choice).
397
 
 
398
 
``\w``
399
 
   For Unicode (str) patterns:
400
 
      Matches Unicode word characters; this includes most characters
401
 
      that can be part of a word in any language, as well as numbers and
402
 
      the underscore. If the :const:`ASCII` flag is used, only
403
 
      ``[a-zA-Z0-9_]`` is matched (but the flag affects the entire
404
 
      regular expression, so in such cases using an explicit
405
 
      ``[a-zA-Z0-9_]`` may be a better choice).
406
 
   For 8-bit (bytes) patterns:
407
 
      Matches characters considered alphanumeric in the ASCII character set;
408
 
      this is equivalent to ``[a-zA-Z0-9_]``.
409
 
 
410
 
``\W``
411
 
   Matches any character which is not a Unicode word character. This is
412
 
   the opposite of ``\w``. If the :const:`ASCII` flag is used this
413
 
   becomes the equivalent of ``[^a-zA-Z0-9_]`` (but the flag affects the
414
 
   entire regular expression, so in such cases using an explicit
415
 
   ``[^a-zA-Z0-9_]`` may be a better choice).
416
 
 
417
 
``\Z``
418
 
   Matches only at the end of the string.
419
 
 
420
 
Most of the standard escapes supported by Python string literals are also
421
 
accepted by the regular expression parser::
422
 
 
423
 
   \a      \b      \f      \n
424
 
   \r      \t      \u      \U
425
 
   \v      \x      \\
426
 
 
427
 
(Note that ``\b`` is used to represent word boundaries, and means "backspace"
428
 
only inside character classes.)
429
 
 
430
 
``'\u'`` and ``'\U'`` escape sequences are only recognized in Unicode
431
 
patterns.  In bytes patterns they are not treated specially.
432
 
 
433
 
Octal escapes are included in a limited form.  If the first digit is a 0, or if
434
 
there are three octal digits, it is considered an octal escape. Otherwise, it is
435
 
a group reference.  As for string literals, octal escapes are always at most
436
 
three digits in length.
437
 
 
438
 
.. versionchanged:: 3.3
439
 
   The ``'\u'`` and ``'\U'`` escape sequences have been added.
440
 
 
441
 
.. deprecated-removed:: 3.5 3.6
442
 
   Unknown escapes consist of ``'\'`` and ASCII letter now raise a
443
 
   deprecation warning and will be forbidden in Python 3.6.
444
 
 
445
 
 
446
 
.. seealso::
447
 
 
448
 
   Mastering Regular Expressions
449
 
      Book on regular expressions by Jeffrey Friedl, published by O'Reilly.  The
450
 
      second edition of the book no longer covers Python at all, but the first
451
 
      edition covered writing good regular expression patterns in great detail.
452
 
 
453
 
 
454
 
 
455
 
.. _contents-of-module-re:
456
 
 
457
 
Module Contents
458
 
---------------
459
 
 
460
 
The module defines several functions, constants, and an exception. Some of the
461
 
functions are simplified versions of the full featured methods for compiled
462
 
regular expressions.  Most non-trivial applications always use the compiled
463
 
form.
464
 
 
465
 
 
466
 
.. function:: compile(pattern, flags=0)
467
 
 
468
 
   Compile a regular expression pattern into a regular expression object, which
469
 
   can be used for matching using its :func:`~regex.match` and
470
 
   :func:`~regex.search` methods, described below.
471
 
 
472
 
   The expression's behaviour can be modified by specifying a *flags* value.
473
 
   Values can be any of the following variables, combined using bitwise OR (the
474
 
   ``|`` operator).
475
 
 
476
 
   The sequence ::
477
 
 
478
 
      prog = re.compile(pattern)
479
 
      result = prog.match(string)
480
 
 
481
 
   is equivalent to ::
482
 
 
483
 
      result = re.match(pattern, string)
484
 
 
485
 
   but using :func:`re.compile` and saving the resulting regular expression
486
 
   object for reuse is more efficient when the expression will be used several
487
 
   times in a single program.
488
 
 
489
 
   .. note::
490
 
 
491
 
      The compiled versions of the most recent patterns passed to
492
 
      :func:`re.compile` and the module-level matching functions are cached, so
493
 
      programs that use only a few regular expressions at a time needn't worry
494
 
      about compiling regular expressions.
495
 
 
496
 
 
497
 
.. data:: A
498
 
          ASCII
499
 
 
500
 
   Make ``\w``, ``\W``, ``\b``, ``\B``, ``\d``, ``\D``, ``\s`` and ``\S``
501
 
   perform ASCII-only matching instead of full Unicode matching.  This is only
502
 
   meaningful for Unicode patterns, and is ignored for byte patterns.
503
 
 
504
 
   Note that for backward compatibility, the :const:`re.U` flag still
505
 
   exists (as well as its synonym :const:`re.UNICODE` and its embedded
506
 
   counterpart ``(?u)``), but these are redundant in Python 3 since
507
 
   matches are Unicode by default for strings (and Unicode matching
508
 
   isn't allowed for bytes).
509
 
 
510
 
 
511
 
.. data:: DEBUG
512
 
 
513
 
   Display debug information about compiled expression.
514
 
 
515
 
 
516
 
.. data:: I
517
 
          IGNORECASE
518
 
 
519
 
   Perform case-insensitive matching; expressions like ``[A-Z]`` will match
520
 
   lowercase letters, too.  This is not affected by the current locale
521
 
   and works for Unicode characters as expected.
522
 
 
523
 
 
524
 
.. data:: L
525
 
          LOCALE
526
 
 
527
 
   Make ``\w``, ``\W``, ``\b``, ``\B``, ``\s`` and ``\S`` dependent on the
528
 
   current locale. The use of this flag is discouraged as the locale mechanism
529
 
   is very unreliable, and it only handles one "culture" at a time anyway;
530
 
   you should use Unicode matching instead, which is the default in Python 3
531
 
   for Unicode (str) patterns. This flag makes sense only with bytes patterns.
532
 
 
533
 
   .. deprecated-removed:: 3.5 3.6
534
 
      Deprecated the use of  :const:`re.LOCALE` with string patterns or
535
 
      :const:`re.ASCII`.
536
 
 
537
 
 
538
 
.. data:: M
539
 
          MULTILINE
540
 
 
541
 
   When specified, the pattern character ``'^'`` matches at the beginning of the
542
 
   string and at the beginning of each line (immediately following each newline);
543
 
   and the pattern character ``'$'`` matches at the end of the string and at the
544
 
   end of each line (immediately preceding each newline).  By default, ``'^'``
545
 
   matches only at the beginning of the string, and ``'$'`` only at the end of the
546
 
   string and immediately before the newline (if any) at the end of the string.
547
 
 
548
 
 
549
 
.. data:: S
550
 
          DOTALL
551
 
 
552
 
   Make the ``'.'`` special character match any character at all, including a
553
 
   newline; without this flag, ``'.'`` will match anything *except* a newline.
554
 
 
555
 
 
556
 
.. data:: X
557
 
          VERBOSE
558
 
 
559
 
   This flag allows you to write regular expressions that look nicer and are
560
 
   more readable by allowing you to visually separate logical sections of the
561
 
   pattern and add comments. Whitespace within the pattern is ignored, except
562
 
   when in a character class or when preceded by an unescaped backslash.
563
 
   When a line contains a ``#`` that is not in a character class and is not
564
 
   preceded by an unescaped backslash, all characters from the leftmost such
565
 
   ``#`` through the end of the line are ignored.
566
 
 
567
 
   This means that the two following regular expression objects that match a
568
 
   decimal number are functionally equal::
569
 
 
570
 
      a = re.compile(r"""\d +  # the integral part
571
 
                         \.    # the decimal point
572
 
                         \d *  # some fractional digits""", re.X)
573
 
      b = re.compile(r"\d+\.\d*")
574
 
 
575
 
 
576
 
 
577
 
 
578
 
.. function:: search(pattern, string, flags=0)
579
 
 
580
 
   Scan through *string* looking for the first location where the regular expression
581
 
   *pattern* produces a match, and return a corresponding :ref:`match object
582
 
   <match-objects>`.  Return ``None`` if no position in the string matches the
583
 
   pattern; note that this is different from finding a zero-length match at some
584
 
   point in the string.
585
 
 
586
 
 
587
 
.. function:: match(pattern, string, flags=0)
588
 
 
589
 
   If zero or more characters at the beginning of *string* match the regular
590
 
   expression *pattern*, return a corresponding :ref:`match object
591
 
   <match-objects>`.  Return ``None`` if the string does not match the pattern;
592
 
   note that this is different from a zero-length match.
593
 
 
594
 
   Note that even in :const:`MULTILINE` mode, :func:`re.match` will only match
595
 
   at the beginning of the string and not at the beginning of each line.
596
 
 
597
 
   If you want to locate a match anywhere in *string*, use :func:`search`
598
 
   instead (see also :ref:`search-vs-match`).
599
 
 
600
 
 
601
 
.. function:: fullmatch(pattern, string, flags=0)
602
 
 
603
 
   If the whole *string* matches the regular expression *pattern*, return a
604
 
   corresponding :ref:`match object <match-objects>`.  Return ``None`` if the
605
 
   string does not match the pattern; note that this is different from a
606
 
   zero-length match.
607
 
 
608
 
   .. versionadded:: 3.4
609
 
 
610
 
 
611
 
.. function:: split(pattern, string, maxsplit=0, flags=0)
612
 
 
613
 
   Split *string* by the occurrences of *pattern*.  If capturing parentheses are
614
 
   used in *pattern*, then the text of all groups in the pattern are also returned
615
 
   as part of the resulting list. If *maxsplit* is nonzero, at most *maxsplit*
616
 
   splits occur, and the remainder of the string is returned as the final element
617
 
   of the list. ::
618
 
 
619
 
      >>> re.split('\W+', 'Words, words, words.')
620
 
      ['Words', 'words', 'words', '']
621
 
      >>> re.split('(\W+)', 'Words, words, words.')
622
 
      ['Words', ', ', 'words', ', ', 'words', '.', '']
623
 
      >>> re.split('\W+', 'Words, words, words.', 1)
624
 
      ['Words', 'words, words.']
625
 
      >>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE)
626
 
      ['0', '3', '9']
627
 
 
628
 
   If there are capturing groups in the separator and it matches at the start of
629
 
   the string, the result will start with an empty string.  The same holds for
630
 
   the end of the string:
631
 
 
632
 
      >>> re.split('(\W+)', '...words, words...')
633
 
      ['', '...', 'words', ', ', 'words', '...', '']
634
 
 
635
 
   That way, separator components are always found at the same relative
636
 
   indices within the result list.
637
 
 
638
 
   .. note::
639
 
 
640
 
      :func:`split` doesn't currently split a string on an empty pattern match.
641
 
      For example:
642
 
 
643
 
         >>> re.split('x*', 'axbc')
644
 
         ['a', 'bc']
645
 
 
646
 
      Even though ``'x*'`` also matches 0 'x' before 'a', between 'b' and 'c',
647
 
      and after 'c', currently these matches are ignored.  The correct behavior
648
 
      (i.e. splitting on empty matches too and returning ``['', 'a', 'b', 'c',
649
 
      '']``) will be implemented in future versions of Python, but since this
650
 
      is a backward incompatible change, a :exc:`FutureWarning` will be raised
651
 
      in the meanwhile.
652
 
 
653
 
      Patterns that can only match empty strings currently never split the
654
 
      string.  Since this doesn't match the expected behavior, a
655
 
      :exc:`ValueError` will be raised starting from Python 3.5::
656
 
 
657
 
         >>> re.split("^$", "foo\n\nbar\n", flags=re.M)
658
 
         Traceback (most recent call last):
659
 
           File "<stdin>", line 1, in <module>
660
 
           ...
661
 
         ValueError: split() requires a non-empty pattern match.
662
 
 
663
 
   .. versionchanged:: 3.1
664
 
      Added the optional flags argument.
665
 
 
666
 
   .. versionchanged:: 3.5
667
 
      Splitting on a pattern that could match an empty string now raises
668
 
      a warning.  Patterns that can only match empty strings are now rejected.
669
 
 
670
 
.. function:: findall(pattern, string, flags=0)
671
 
 
672
 
   Return all non-overlapping matches of *pattern* in *string*, as a list of
673
 
   strings.  The *string* is scanned left-to-right, and matches are returned in
674
 
   the order found.  If one or more groups are present in the pattern, return a
675
 
   list of groups; this will be a list of tuples if the pattern has more than
676
 
   one group.  Empty matches are included in the result unless they touch the
677
 
   beginning of another match.
678
 
 
679
 
 
680
 
.. function:: finditer(pattern, string, flags=0)
681
 
 
682
 
   Return an :term:`iterator` yielding :ref:`match objects <match-objects>` over
683
 
   all non-overlapping matches for the RE *pattern* in *string*.  The *string*
684
 
   is scanned left-to-right, and matches are returned in the order found.  Empty
685
 
   matches are included in the result unless they touch the beginning of another
686
 
   match.
687
 
 
688
 
 
689
 
.. function:: sub(pattern, repl, string, count=0, flags=0)
690
 
 
691
 
   Return the string obtained by replacing the leftmost non-overlapping occurrences
692
 
   of *pattern* in *string* by the replacement *repl*.  If the pattern isn't found,
693
 
   *string* is returned unchanged.  *repl* can be a string or a function; if it is
694
 
   a string, any backslash escapes in it are processed.  That is, ``\n`` is
695
 
   converted to a single newline character, ``\r`` is converted to a carriage return, and
696
 
   so forth.  Unknown escapes such as ``\&`` are left alone.  Backreferences, such
697
 
   as ``\6``, are replaced with the substring matched by group 6 in the pattern.
698
 
   For example:
699
 
 
700
 
      >>> re.sub(r'def\s+([a-zA-Z_][a-zA-Z_0-9]*)\s*\(\s*\):',
701
 
      ...        r'static PyObject*\npy_\1(void)\n{',
702
 
      ...        'def myfunc():')
703
 
      'static PyObject*\npy_myfunc(void)\n{'
704
 
 
705
 
   If *repl* is a function, it is called for every non-overlapping occurrence of
706
 
   *pattern*.  The function takes a single match object argument, and returns the
707
 
   replacement string.  For example:
708
 
 
709
 
      >>> def dashrepl(matchobj):
710
 
      ...     if matchobj.group(0) == '-': return ' '
711
 
      ...     else: return '-'
712
 
      >>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')
713
 
      'pro--gram files'
714
 
      >>> re.sub(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE)
715
 
      'Baked Beans & Spam'
716
 
 
717
 
   The pattern may be a string or an RE object.
718
 
 
719
 
   The optional argument *count* is the maximum number of pattern occurrences to be
720
 
   replaced; *count* must be a non-negative integer.  If omitted or zero, all
721
 
   occurrences will be replaced. Empty matches for the pattern are replaced only
722
 
   when not adjacent to a previous match, so ``sub('x*', '-', 'abc')`` returns
723
 
   ``'-a-b-c-'``.
724
 
 
725
 
   In string-type *repl* arguments, in addition to the character escapes and
726
 
   backreferences described above,
727
 
   ``\g<name>`` will use the substring matched by the group named ``name``, as
728
 
   defined by the ``(?P<name>...)`` syntax. ``\g<number>`` uses the corresponding
729
 
   group number; ``\g<2>`` is therefore equivalent to ``\2``, but isn't ambiguous
730
 
   in a replacement such as ``\g<2>0``.  ``\20`` would be interpreted as a
731
 
   reference to group 20, not a reference to group 2 followed by the literal
732
 
   character ``'0'``.  The backreference ``\g<0>`` substitutes in the entire
733
 
   substring matched by the RE.
734
 
 
735
 
   .. versionchanged:: 3.1
736
 
      Added the optional flags argument.
737
 
 
738
 
   .. versionchanged:: 3.5
739
 
      Unmatched groups are replaced with an empty string.
740
 
 
741
 
   .. deprecated-removed:: 3.5 3.6
742
 
      Unknown escapes consist of ``'\'`` and ASCII letter now raise a
743
 
      deprecation warning and will be forbidden in Python 3.6.
744
 
 
745
 
 
746
 
.. function:: subn(pattern, repl, string, count=0, flags=0)
747
 
 
748
 
   Perform the same operation as :func:`sub`, but return a tuple ``(new_string,
749
 
   number_of_subs_made)``.
750
 
 
751
 
   .. versionchanged:: 3.1
752
 
      Added the optional flags argument.
753
 
 
754
 
   .. versionchanged:: 3.5
755
 
      Unmatched groups are replaced with an empty string.
756
 
 
757
 
 
758
 
.. function:: escape(string)
759
 
 
760
 
   Escape all the characters in pattern except ASCII letters, numbers and ``'_'``.
761
 
   This is useful if you want to match an arbitrary literal string that may
762
 
   have regular expression metacharacters in it.
763
 
 
764
 
   .. versionchanged:: 3.3
765
 
      The ``'_'`` character is no longer escaped.
766
 
 
767
 
 
768
 
.. function:: purge()
769
 
 
770
 
   Clear the regular expression cache.
771
 
 
772
 
 
773
 
.. exception:: error(msg, pattern=None, pos=None)
774
 
 
775
 
   Exception raised when a string passed to one of the functions here is not a
776
 
   valid regular expression (for example, it might contain unmatched parentheses)
777
 
   or when some other error occurs during compilation or matching.  It is never an
778
 
   error if a string contains no match for a pattern.  The error instance has
779
 
   the following additional attributes:
780
 
 
781
 
   .. attribute:: msg
782
 
 
783
 
      The unformatted error message.
784
 
 
785
 
   .. attribute:: pattern
786
 
 
787
 
      The regular expression pattern.
788
 
 
789
 
   .. attribute:: pos
790
 
 
791
 
      The index of *pattern* where compilation failed.
792
 
 
793
 
   .. attribute:: lineno
794
 
 
795
 
      The line corresponding to *pos*.
796
 
 
797
 
   .. attribute:: colno
798
 
 
799
 
      The column corresponding to *pos*.
800
 
 
801
 
   .. versionchanged:: 3.5
802
 
      Added additional attributes.
803
 
 
804
 
.. _re-objects:
805
 
 
806
 
Regular Expression Objects
807
 
--------------------------
808
 
 
809
 
Compiled regular expression objects support the following methods and
810
 
attributes:
811
 
 
812
 
.. method:: regex.search(string[, pos[, endpos]])
813
 
 
814
 
   Scan through *string* looking for a location where this regular expression
815
 
   produces a match, and return a corresponding :ref:`match object
816
 
   <match-objects>`.  Return ``None`` if no position in the string matches the
817
 
   pattern; note that this is different from finding a zero-length match at some
818
 
   point in the string.
819
 
 
820
 
   The optional second parameter *pos* gives an index in the string where the
821
 
   search is to start; it defaults to ``0``.  This is not completely equivalent to
822
 
   slicing the string; the ``'^'`` pattern character matches at the real beginning
823
 
   of the string and at positions just after a newline, but not necessarily at the
824
 
   index where the search is to start.
825
 
 
826
 
   The optional parameter *endpos* limits how far the string will be searched; it
827
 
   will be as if the string is *endpos* characters long, so only the characters
828
 
   from *pos* to ``endpos - 1`` will be searched for a match.  If *endpos* is less
829
 
   than *pos*, no match will be found; otherwise, if *rx* is a compiled regular
830
 
   expression object, ``rx.search(string, 0, 50)`` is equivalent to
831
 
   ``rx.search(string[:50], 0)``.
832
 
 
833
 
   >>> pattern = re.compile("d")
834
 
   >>> pattern.search("dog")     # Match at index 0
835
 
   <_sre.SRE_Match object; span=(0, 1), match='d'>
836
 
   >>> pattern.search("dog", 1)  # No match; search doesn't include the "d"
837
 
 
838
 
 
839
 
.. method:: regex.match(string[, pos[, endpos]])
840
 
 
841
 
   If zero or more characters at the *beginning* of *string* match this regular
842
 
   expression, return a corresponding :ref:`match object <match-objects>`.
843
 
   Return ``None`` if the string does not match the pattern; note that this is
844
 
   different from a zero-length match.
845
 
 
846
 
   The optional *pos* and *endpos* parameters have the same meaning as for the
847
 
   :meth:`~regex.search` method.
848
 
 
849
 
   >>> pattern = re.compile("o")
850
 
   >>> pattern.match("dog")      # No match as "o" is not at the start of "dog".
851
 
   >>> pattern.match("dog", 1)   # Match as "o" is the 2nd character of "dog".
852
 
   <_sre.SRE_Match object; span=(1, 2), match='o'>
853
 
 
854
 
   If you want to locate a match anywhere in *string*, use
855
 
   :meth:`~regex.search` instead (see also :ref:`search-vs-match`).
856
 
 
857
 
 
858
 
.. method:: regex.fullmatch(string[, pos[, endpos]])
859
 
 
860
 
   If the whole *string* matches this regular expression, return a corresponding
861
 
   :ref:`match object <match-objects>`.  Return ``None`` if the string does not
862
 
   match the pattern; note that this is different from a zero-length match.
863
 
 
864
 
   The optional *pos* and *endpos* parameters have the same meaning as for the
865
 
   :meth:`~regex.search` method.
866
 
 
867
 
   >>> pattern = re.compile("o[gh]")
868
 
   >>> pattern.fullmatch("dog")      # No match as "o" is not at the start of "dog".
869
 
   >>> pattern.fullmatch("ogre")     # No match as not the full string matches.
870
 
   >>> pattern.fullmatch("doggie", 1, 3)   # Matches within given limits.
871
 
   <_sre.SRE_Match object; span=(1, 3), match='og'>
872
 
 
873
 
   .. versionadded:: 3.4
874
 
 
875
 
 
876
 
.. method:: regex.split(string, maxsplit=0)
877
 
 
878
 
   Identical to the :func:`split` function, using the compiled pattern.
879
 
 
880
 
 
881
 
.. method:: regex.findall(string[, pos[, endpos]])
882
 
 
883
 
   Similar to the :func:`findall` function, using the compiled pattern, but
884
 
   also accepts optional *pos* and *endpos* parameters that limit the search
885
 
   region like for :meth:`match`.
886
 
 
887
 
 
888
 
.. method:: regex.finditer(string[, pos[, endpos]])
889
 
 
890
 
   Similar to the :func:`finditer` function, using the compiled pattern, but
891
 
   also accepts optional *pos* and *endpos* parameters that limit the search
892
 
   region like for :meth:`match`.
893
 
 
894
 
 
895
 
.. method:: regex.sub(repl, string, count=0)
896
 
 
897
 
   Identical to the :func:`sub` function, using the compiled pattern.
898
 
 
899
 
 
900
 
.. method:: regex.subn(repl, string, count=0)
901
 
 
902
 
   Identical to the :func:`subn` function, using the compiled pattern.
903
 
 
904
 
 
905
 
.. attribute:: regex.flags
906
 
 
907
 
   The regex matching flags.  This is a combination of the flags given to
908
 
   :func:`.compile`, any ``(?...)`` inline flags in the pattern, and implicit
909
 
   flags such as :data:`UNICODE` if the pattern is a Unicode string.
910
 
 
911
 
 
912
 
.. attribute:: regex.groups
913
 
 
914
 
   The number of capturing groups in the pattern.
915
 
 
916
 
 
917
 
.. attribute:: regex.groupindex
918
 
 
919
 
   A dictionary mapping any symbolic group names defined by ``(?P<id>)`` to group
920
 
   numbers.  The dictionary is empty if no symbolic groups were used in the
921
 
   pattern.
922
 
 
923
 
 
924
 
.. attribute:: regex.pattern
925
 
 
926
 
   The pattern string from which the RE object was compiled.
927
 
 
928
 
 
929
 
.. _match-objects:
930
 
 
931
 
Match Objects
932
 
-------------
933
 
 
934
 
Match objects always have a boolean value of ``True``.
935
 
Since :meth:`~regex.match` and :meth:`~regex.search` return ``None``
936
 
when there is no match, you can test whether there was a match with a simple
937
 
``if`` statement::
938
 
 
939
 
   match = re.search(pattern, string)
940
 
   if match:
941
 
       process(match)
942
 
 
943
 
Match objects support the following methods and attributes:
944
 
 
945
 
 
946
 
.. method:: match.expand(template)
947
 
 
948
 
   Return the string obtained by doing backslash substitution on the template
949
 
   string *template*, as done by the :meth:`~regex.sub` method.
950
 
   Escapes such as ``\n`` are converted to the appropriate characters,
951
 
   and numeric backreferences (``\1``, ``\2``) and named backreferences
952
 
   (``\g<1>``, ``\g<name>``) are replaced by the contents of the
953
 
   corresponding group.
954
 
 
955
 
   .. versionchanged:: 3.5
956
 
      Unmatched groups are replaced with an empty string.
957
 
 
958
 
.. method:: match.group([group1, ...])
959
 
 
960
 
   Returns one or more subgroups of the match.  If there is a single argument, the
961
 
   result is a single string; if there are multiple arguments, the result is a
962
 
   tuple with one item per argument. Without arguments, *group1* defaults to zero
963
 
   (the whole match is returned). If a *groupN* argument is zero, the corresponding
964
 
   return value is the entire matching string; if it is in the inclusive range
965
 
   [1..99], it is the string matching the corresponding parenthesized group.  If a
966
 
   group number is negative or larger than the number of groups defined in the
967
 
   pattern, an :exc:`IndexError` exception is raised. If a group is contained in a
968
 
   part of the pattern that did not match, the corresponding result is ``None``.
969
 
   If a group is contained in a part of the pattern that matched multiple times,
970
 
   the last match is returned.
971
 
 
972
 
      >>> m = re.match(r"(\w+) (\w+)", "Isaac Newton, physicist")
973
 
      >>> m.group(0)       # The entire match
974
 
      'Isaac Newton'
975
 
      >>> m.group(1)       # The first parenthesized subgroup.
976
 
      'Isaac'
977
 
      >>> m.group(2)       # The second parenthesized subgroup.
978
 
      'Newton'
979
 
      >>> m.group(1, 2)    # Multiple arguments give us a tuple.
980
 
      ('Isaac', 'Newton')
981
 
 
982
 
   If the regular expression uses the ``(?P<name>...)`` syntax, the *groupN*
983
 
   arguments may also be strings identifying groups by their group name.  If a
984
 
   string argument is not used as a group name in the pattern, an :exc:`IndexError`
985
 
   exception is raised.
986
 
 
987
 
   A moderately complicated example:
988
 
 
989
 
      >>> m = re.match(r"(?P<first_name>\w+) (?P<last_name>\w+)", "Malcolm Reynolds")
990
 
      >>> m.group('first_name')
991
 
      'Malcolm'
992
 
      >>> m.group('last_name')
993
 
      'Reynolds'
994
 
 
995
 
   Named groups can also be referred to by their index:
996
 
 
997
 
      >>> m.group(1)
998
 
      'Malcolm'
999
 
      >>> m.group(2)
1000
 
      'Reynolds'
1001
 
 
1002
 
   If a group matches multiple times, only the last match is accessible:
1003
 
 
1004
 
      >>> m = re.match(r"(..)+", "a1b2c3")  # Matches 3 times.
1005
 
      >>> m.group(1)                        # Returns only the last match.
1006
 
      'c3'
1007
 
 
1008
 
 
1009
 
.. method:: match.groups(default=None)
1010
 
 
1011
 
   Return a tuple containing all the subgroups of the match, from 1 up to however
1012
 
   many groups are in the pattern.  The *default* argument is used for groups that
1013
 
   did not participate in the match; it defaults to ``None``.
1014
 
 
1015
 
   For example:
1016
 
 
1017
 
      >>> m = re.match(r"(\d+)\.(\d+)", "24.1632")
1018
 
      >>> m.groups()
1019
 
      ('24', '1632')
1020
 
 
1021
 
   If we make the decimal place and everything after it optional, not all groups
1022
 
   might participate in the match.  These groups will default to ``None`` unless
1023
 
   the *default* argument is given:
1024
 
 
1025
 
      >>> m = re.match(r"(\d+)\.?(\d+)?", "24")
1026
 
      >>> m.groups()      # Second group defaults to None.
1027
 
      ('24', None)
1028
 
      >>> m.groups('0')   # Now, the second group defaults to '0'.
1029
 
      ('24', '0')
1030
 
 
1031
 
 
1032
 
.. method:: match.groupdict(default=None)
1033
 
 
1034
 
   Return a dictionary containing all the *named* subgroups of the match, keyed by
1035
 
   the subgroup name.  The *default* argument is used for groups that did not
1036
 
   participate in the match; it defaults to ``None``.  For example:
1037
 
 
1038
 
      >>> m = re.match(r"(?P<first_name>\w+) (?P<last_name>\w+)", "Malcolm Reynolds")
1039
 
      >>> m.groupdict()
1040
 
      {'first_name': 'Malcolm', 'last_name': 'Reynolds'}
1041
 
 
1042
 
 
1043
 
.. method:: match.start([group])
1044
 
            match.end([group])
1045
 
 
1046
 
   Return the indices of the start and end of the substring matched by *group*;
1047
 
   *group* defaults to zero (meaning the whole matched substring). Return ``-1`` if
1048
 
   *group* exists but did not contribute to the match.  For a match object *m*, and
1049
 
   a group *g* that did contribute to the match, the substring matched by group *g*
1050
 
   (equivalent to ``m.group(g)``) is ::
1051
 
 
1052
 
      m.string[m.start(g):m.end(g)]
1053
 
 
1054
 
   Note that ``m.start(group)`` will equal ``m.end(group)`` if *group* matched a
1055
 
   null string.  For example, after ``m = re.search('b(c?)', 'cba')``,
1056
 
   ``m.start(0)`` is 1, ``m.end(0)`` is 2, ``m.start(1)`` and ``m.end(1)`` are both
1057
 
   2, and ``m.start(2)`` raises an :exc:`IndexError` exception.
1058
 
 
1059
 
   An example that will remove *remove_this* from email addresses:
1060
 
 
1061
 
      >>> email = "tony@tiremove_thisger.net"
1062
 
      >>> m = re.search("remove_this", email)
1063
 
      >>> email[:m.start()] + email[m.end():]
1064
 
      'tony@tiger.net'
1065
 
 
1066
 
 
1067
 
.. method:: match.span([group])
1068
 
 
1069
 
   For a match *m*, return the 2-tuple ``(m.start(group), m.end(group))``. Note
1070
 
   that if *group* did not contribute to the match, this is ``(-1, -1)``.
1071
 
   *group* defaults to zero, the entire match.
1072
 
 
1073
 
 
1074
 
.. attribute:: match.pos
1075
 
 
1076
 
   The value of *pos* which was passed to the :meth:`~regex.search` or
1077
 
   :meth:`~regex.match` method of a :ref:`regex object <re-objects>`.  This is
1078
 
   the index into the string at which the RE engine started looking for a match.
1079
 
 
1080
 
 
1081
 
.. attribute:: match.endpos
1082
 
 
1083
 
   The value of *endpos* which was passed to the :meth:`~regex.search` or
1084
 
   :meth:`~regex.match` method of a :ref:`regex object <re-objects>`.  This is
1085
 
   the index into the string beyond which the RE engine will not go.
1086
 
 
1087
 
 
1088
 
.. attribute:: match.lastindex
1089
 
 
1090
 
   The integer index of the last matched capturing group, or ``None`` if no group
1091
 
   was matched at all. For example, the expressions ``(a)b``, ``((a)(b))``, and
1092
 
   ``((ab))`` will have ``lastindex == 1`` if applied to the string ``'ab'``, while
1093
 
   the expression ``(a)(b)`` will have ``lastindex == 2``, if applied to the same
1094
 
   string.
1095
 
 
1096
 
 
1097
 
.. attribute:: match.lastgroup
1098
 
 
1099
 
   The name of the last matched capturing group, or ``None`` if the group didn't
1100
 
   have a name, or if no group was matched at all.
1101
 
 
1102
 
 
1103
 
.. attribute:: match.re
1104
 
 
1105
 
   The regular expression object whose :meth:`~regex.match` or
1106
 
   :meth:`~regex.search` method produced this match instance.
1107
 
 
1108
 
 
1109
 
.. attribute:: match.string
1110
 
 
1111
 
   The string passed to :meth:`~regex.match` or :meth:`~regex.search`.
1112
 
 
1113
 
 
1114
 
.. _re-examples:
1115
 
 
1116
 
Regular Expression Examples
1117
 
---------------------------
1118
 
 
1119
 
 
1120
 
Checking for a Pair
1121
 
^^^^^^^^^^^^^^^^^^^
1122
 
 
1123
 
In this example, we'll use the following helper function to display match
1124
 
objects a little more gracefully:
1125
 
 
1126
 
.. testcode::
1127
 
 
1128
 
   def displaymatch(match):
1129
 
       if match is None:
1130
 
           return None
1131
 
       return '<Match: %r, groups=%r>' % (match.group(), match.groups())
1132
 
 
1133
 
Suppose you are writing a poker program where a player's hand is represented as
1134
 
a 5-character string with each character representing a card, "a" for ace, "k"
1135
 
for king, "q" for queen, "j" for jack, "t" for 10, and "2" through "9"
1136
 
representing the card with that value.
1137
 
 
1138
 
To see if a given string is a valid hand, one could do the following:
1139
 
 
1140
 
   >>> valid = re.compile(r"^[a2-9tjqk]{5}$")
1141
 
   >>> displaymatch(valid.match("akt5q"))  # Valid.
1142
 
   "<Match: 'akt5q', groups=()>"
1143
 
   >>> displaymatch(valid.match("akt5e"))  # Invalid.
1144
 
   >>> displaymatch(valid.match("akt"))    # Invalid.
1145
 
   >>> displaymatch(valid.match("727ak"))  # Valid.
1146
 
   "<Match: '727ak', groups=()>"
1147
 
 
1148
 
That last hand, ``"727ak"``, contained a pair, or two of the same valued cards.
1149
 
To match this with a regular expression, one could use backreferences as such:
1150
 
 
1151
 
   >>> pair = re.compile(r".*(.).*\1")
1152
 
   >>> displaymatch(pair.match("717ak"))     # Pair of 7s.
1153
 
   "<Match: '717', groups=('7',)>"
1154
 
   >>> displaymatch(pair.match("718ak"))     # No pairs.
1155
 
   >>> displaymatch(pair.match("354aa"))     # Pair of aces.
1156
 
   "<Match: '354aa', groups=('a',)>"
1157
 
 
1158
 
To find out what card the pair consists of, one could use the
1159
 
:meth:`~match.group` method of the match object in the following manner:
1160
 
 
1161
 
.. doctest::
1162
 
 
1163
 
   >>> pair.match("717ak").group(1)
1164
 
   '7'
1165
 
 
1166
 
   # Error because re.match() returns None, which doesn't have a group() method:
1167
 
   >>> pair.match("718ak").group(1)
1168
 
   Traceback (most recent call last):
1169
 
     File "<pyshell#23>", line 1, in <module>
1170
 
       re.match(r".*(.).*\1", "718ak").group(1)
1171
 
   AttributeError: 'NoneType' object has no attribute 'group'
1172
 
 
1173
 
   >>> pair.match("354aa").group(1)
1174
 
   'a'
1175
 
 
1176
 
 
1177
 
Simulating scanf()
1178
 
^^^^^^^^^^^^^^^^^^
1179
 
 
1180
 
.. index:: single: scanf()
1181
 
 
1182
 
Python does not currently have an equivalent to :c:func:`scanf`.  Regular
1183
 
expressions are generally more powerful, though also more verbose, than
1184
 
:c:func:`scanf` format strings.  The table below offers some more-or-less
1185
 
equivalent mappings between :c:func:`scanf` format tokens and regular
1186
 
expressions.
1187
 
 
1188
 
+--------------------------------+---------------------------------------------+
1189
 
| :c:func:`scanf` Token          | Regular Expression                          |
1190
 
+================================+=============================================+
1191
 
| ``%c``                         | ``.``                                       |
1192
 
+--------------------------------+---------------------------------------------+
1193
 
| ``%5c``                        | ``.{5}``                                    |
1194
 
+--------------------------------+---------------------------------------------+
1195
 
| ``%d``                         | ``[-+]?\d+``                                |
1196
 
+--------------------------------+---------------------------------------------+
1197
 
| ``%e``, ``%E``, ``%f``, ``%g`` | ``[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?`` |
1198
 
+--------------------------------+---------------------------------------------+
1199
 
| ``%i``                         | ``[-+]?(0[xX][\dA-Fa-f]+|0[0-7]*|\d+)``     |
1200
 
+--------------------------------+---------------------------------------------+
1201
 
| ``%o``                         | ``[-+]?[0-7]+``                             |
1202
 
+--------------------------------+---------------------------------------------+
1203
 
| ``%s``                         | ``\S+``                                     |
1204
 
+--------------------------------+---------------------------------------------+
1205
 
| ``%u``                         | ``\d+``                                     |
1206
 
+--------------------------------+---------------------------------------------+
1207
 
| ``%x``, ``%X``                 | ``[-+]?(0[xX])?[\dA-Fa-f]+``                |
1208
 
+--------------------------------+---------------------------------------------+
1209
 
 
1210
 
To extract the filename and numbers from a string like ::
1211
 
 
1212
 
   /usr/sbin/sendmail - 0 errors, 4 warnings
1213
 
 
1214
 
you would use a :c:func:`scanf` format like ::
1215
 
 
1216
 
   %s - %d errors, %d warnings
1217
 
 
1218
 
The equivalent regular expression would be ::
1219
 
 
1220
 
   (\S+) - (\d+) errors, (\d+) warnings
1221
 
 
1222
 
 
1223
 
.. _search-vs-match:
1224
 
 
1225
 
search() vs. match()
1226
 
^^^^^^^^^^^^^^^^^^^^
1227
 
 
1228
 
.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
1229
 
 
1230
 
Python offers two different primitive operations based on regular expressions:
1231
 
:func:`re.match` checks for a match only at the beginning of the string, while
1232
 
:func:`re.search` checks for a match anywhere in the string (this is what Perl
1233
 
does by default).
1234
 
 
1235
 
For example::
1236
 
 
1237
 
   >>> re.match("c", "abcdef")  # No match
1238
 
   >>> re.search("c", "abcdef") # Match
1239
 
   <_sre.SRE_Match object; span=(2, 3), match='c'>
1240
 
 
1241
 
Regular expressions beginning with ``'^'`` can be used with :func:`search` to
1242
 
restrict the match at the beginning of the string::
1243
 
 
1244
 
   >>> re.match("c", "abcdef")  # No match
1245
 
   >>> re.search("^c", "abcdef") # No match
1246
 
   >>> re.search("^a", "abcdef")  # Match
1247
 
   <_sre.SRE_Match object; span=(0, 1), match='a'>
1248
 
 
1249
 
Note however that in :const:`MULTILINE` mode :func:`match` only matches at the
1250
 
beginning of the string, whereas using :func:`search` with a regular expression
1251
 
beginning with ``'^'`` will match at the beginning of each line.
1252
 
 
1253
 
   >>> re.match('X', 'A\nB\nX', re.MULTILINE)  # No match
1254
 
   >>> re.search('^X', 'A\nB\nX', re.MULTILINE)  # Match
1255
 
   <_sre.SRE_Match object; span=(4, 5), match='X'>
1256
 
 
1257
 
 
1258
 
Making a Phonebook
1259
 
^^^^^^^^^^^^^^^^^^
1260
 
 
1261
 
:func:`split` splits a string into a list delimited by the passed pattern.  The
1262
 
method is invaluable for converting textual data into data structures that can be
1263
 
easily read and modified by Python as demonstrated in the following example that
1264
 
creates a phonebook.
1265
 
 
1266
 
First, here is the input.  Normally it may come from a file, here we are using
1267
 
triple-quoted string syntax:
1268
 
 
1269
 
   >>> text = """Ross McFluff: 834.345.1254 155 Elm Street
1270
 
   ...
1271
 
   ... Ronald Heathmore: 892.345.3428 436 Finley Avenue
1272
 
   ... Frank Burger: 925.541.7625 662 South Dogwood Way
1273
 
   ...
1274
 
   ...
1275
 
   ... Heather Albrecht: 548.326.4584 919 Park Place"""
1276
 
 
1277
 
The entries are separated by one or more newlines. Now we convert the string
1278
 
into a list with each nonempty line having its own entry:
1279
 
 
1280
 
.. doctest::
1281
 
   :options: +NORMALIZE_WHITESPACE
1282
 
 
1283
 
   >>> entries = re.split("\n+", text)
1284
 
   >>> entries
1285
 
   ['Ross McFluff: 834.345.1254 155 Elm Street',
1286
 
   'Ronald Heathmore: 892.345.3428 436 Finley Avenue',
1287
 
   'Frank Burger: 925.541.7625 662 South Dogwood Way',
1288
 
   'Heather Albrecht: 548.326.4584 919 Park Place']
1289
 
 
1290
 
Finally, split each entry into a list with first name, last name, telephone
1291
 
number, and address.  We use the ``maxsplit`` parameter of :func:`split`
1292
 
because the address has spaces, our splitting pattern, in it:
1293
 
 
1294
 
.. doctest::
1295
 
   :options: +NORMALIZE_WHITESPACE
1296
 
 
1297
 
   >>> [re.split(":? ", entry, 3) for entry in entries]
1298
 
   [['Ross', 'McFluff', '834.345.1254', '155 Elm Street'],
1299
 
   ['Ronald', 'Heathmore', '892.345.3428', '436 Finley Avenue'],
1300
 
   ['Frank', 'Burger', '925.541.7625', '662 South Dogwood Way'],
1301
 
   ['Heather', 'Albrecht', '548.326.4584', '919 Park Place']]
1302
 
 
1303
 
The ``:?`` pattern matches the colon after the last name, so that it does not
1304
 
occur in the result list.  With a ``maxsplit`` of ``4``, we could separate the
1305
 
house number from the street name:
1306
 
 
1307
 
.. doctest::
1308
 
   :options: +NORMALIZE_WHITESPACE
1309
 
 
1310
 
   >>> [re.split(":? ", entry, 4) for entry in entries]
1311
 
   [['Ross', 'McFluff', '834.345.1254', '155', 'Elm Street'],
1312
 
   ['Ronald', 'Heathmore', '892.345.3428', '436', 'Finley Avenue'],
1313
 
   ['Frank', 'Burger', '925.541.7625', '662', 'South Dogwood Way'],
1314
 
   ['Heather', 'Albrecht', '548.326.4584', '919', 'Park Place']]
1315
 
 
1316
 
 
1317
 
Text Munging
1318
 
^^^^^^^^^^^^
1319
 
 
1320
 
:func:`sub` replaces every occurrence of a pattern with a string or the
1321
 
result of a function.  This example demonstrates using :func:`sub` with
1322
 
a function to "munge" text, or randomize the order of all the characters
1323
 
in each word of a sentence except for the first and last characters::
1324
 
 
1325
 
   >>> def repl(m):
1326
 
   ...   inner_word = list(m.group(2))
1327
 
   ...   random.shuffle(inner_word)
1328
 
   ...   return m.group(1) + "".join(inner_word) + m.group(3)
1329
 
   >>> text = "Professor Abdolmalek, please report your absences promptly."
1330
 
   >>> re.sub(r"(\w)(\w+)(\w)", repl, text)
1331
 
   'Poefsrosr Aealmlobdk, pslaee reorpt your abnseces plmrptoy.'
1332
 
   >>> re.sub(r"(\w)(\w+)(\w)", repl, text)
1333
 
   'Pofsroser Aodlambelk, plasee reoprt yuor asnebces potlmrpy.'
1334
 
 
1335
 
 
1336
 
Finding all Adverbs
1337
 
^^^^^^^^^^^^^^^^^^^
1338
 
 
1339
 
:func:`findall` matches *all* occurrences of a pattern, not just the first
1340
 
one as :func:`search` does.  For example, if one was a writer and wanted to
1341
 
find all of the adverbs in some text, he or she might use :func:`findall` in
1342
 
the following manner:
1343
 
 
1344
 
   >>> text = "He was carefully disguised but captured quickly by police."
1345
 
   >>> re.findall(r"\w+ly", text)
1346
 
   ['carefully', 'quickly']
1347
 
 
1348
 
 
1349
 
Finding all Adverbs and their Positions
1350
 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1351
 
 
1352
 
If one wants more information about all matches of a pattern than the matched
1353
 
text, :func:`finditer` is useful as it provides :ref:`match objects
1354
 
<match-objects>` instead of strings.  Continuing with the previous example, if
1355
 
one was a writer who wanted to find all of the adverbs *and their positions* in
1356
 
some text, he or she would use :func:`finditer` in the following manner:
1357
 
 
1358
 
   >>> text = "He was carefully disguised but captured quickly by police."
1359
 
   >>> for m in re.finditer(r"\w+ly", text):
1360
 
   ...     print('%02d-%02d: %s' % (m.start(), m.end(), m.group(0)))
1361
 
   07-16: carefully
1362
 
   40-47: quickly
1363
 
 
1364
 
 
1365
 
Raw String Notation
1366
 
^^^^^^^^^^^^^^^^^^^
1367
 
 
1368
 
Raw string notation (``r"text"``) keeps regular expressions sane.  Without it,
1369
 
every backslash (``'\'``) in a regular expression would have to be prefixed with
1370
 
another one to escape it.  For example, the two following lines of code are
1371
 
functionally identical:
1372
 
 
1373
 
   >>> re.match(r"\W(.)\1\W", " ff ")
1374
 
   <_sre.SRE_Match object; span=(0, 4), match=' ff '>
1375
 
   >>> re.match("\\W(.)\\1\\W", " ff ")
1376
 
   <_sre.SRE_Match object; span=(0, 4), match=' ff '>
1377
 
 
1378
 
When one wants to match a literal backslash, it must be escaped in the regular
1379
 
expression.  With raw string notation, this means ``r"\\"``.  Without raw string
1380
 
notation, one must use ``"\\\\"``, making the following lines of code
1381
 
functionally identical:
1382
 
 
1383
 
   >>> re.match(r"\\", r"\\")
1384
 
   <_sre.SRE_Match object; span=(0, 1), match='\\'>
1385
 
   >>> re.match("\\\\", r"\\")
1386
 
   <_sre.SRE_Match object; span=(0, 1), match='\\'>
1387
 
 
1388
 
 
1389
 
Writing a Tokenizer
1390
 
^^^^^^^^^^^^^^^^^^^
1391
 
 
1392
 
A `tokenizer or scanner <http://en.wikipedia.org/wiki/Lexical_analysis>`_
1393
 
analyzes a string to categorize groups of characters.  This is a useful first
1394
 
step in writing a compiler or interpreter.
1395
 
 
1396
 
The text categories are specified with regular expressions.  The technique is
1397
 
to combine those into a single master regular expression and to loop over
1398
 
successive matches::
1399
 
 
1400
 
    import collections
1401
 
    import re
1402
 
 
1403
 
    Token = collections.namedtuple('Token', ['typ', 'value', 'line', 'column'])
1404
 
 
1405
 
    def tokenize(code):
1406
 
        keywords = {'IF', 'THEN', 'ENDIF', 'FOR', 'NEXT', 'GOSUB', 'RETURN'}
1407
 
        token_specification = [
1408
 
            ('NUMBER',  r'\d+(\.\d*)?'), # Integer or decimal number
1409
 
            ('ASSIGN',  r':='),          # Assignment operator
1410
 
            ('END',     r';'),           # Statement terminator
1411
 
            ('ID',      r'[A-Za-z]+'),   # Identifiers
1412
 
            ('OP',      r'[+\-*/]'),     # Arithmetic operators
1413
 
            ('NEWLINE', r'\n'),          # Line endings
1414
 
            ('SKIP',    r'[ \t]+'),      # Skip over spaces and tabs
1415
 
            ('MISMATCH',r'.'),           # Any other character
1416
 
        ]
1417
 
        tok_regex = '|'.join('(?P<%s>%s)' % pair for pair in token_specification)
1418
 
        line_num = 1
1419
 
        line_start = 0
1420
 
        for mo in re.finditer(tok_regex, code):
1421
 
            kind = mo.lastgroup
1422
 
            value = mo.group(kind)
1423
 
            if kind == 'NEWLINE':
1424
 
                line_start = mo.end()
1425
 
                line_num += 1
1426
 
            elif kind == 'SKIP':
1427
 
                pass
1428
 
            elif kind == 'MISMATCH':
1429
 
                raise RuntimeError('%r unexpected on line %d' % (value, line_num))
1430
 
            else:
1431
 
                if kind == 'ID' and value in keywords:
1432
 
                    kind = value
1433
 
                column = mo.start() - line_start
1434
 
                yield Token(kind, value, line_num, column)
1435
 
 
1436
 
    statements = '''
1437
 
        IF quantity THEN
1438
 
            total := total + price * quantity;
1439
 
            tax := price * 0.05;
1440
 
        ENDIF;
1441
 
    '''
1442
 
 
1443
 
    for token in tokenize(statements):
1444
 
        print(token)
1445
 
 
1446
 
The tokenizer produces the following output::
1447
 
 
1448
 
    Token(typ='IF', value='IF', line=2, column=4)
1449
 
    Token(typ='ID', value='quantity', line=2, column=7)
1450
 
    Token(typ='THEN', value='THEN', line=2, column=16)
1451
 
    Token(typ='ID', value='total', line=3, column=8)
1452
 
    Token(typ='ASSIGN', value=':=', line=3, column=14)
1453
 
    Token(typ='ID', value='total', line=3, column=17)
1454
 
    Token(typ='OP', value='+', line=3, column=23)
1455
 
    Token(typ='ID', value='price', line=3, column=25)
1456
 
    Token(typ='OP', value='*', line=3, column=31)
1457
 
    Token(typ='ID', value='quantity', line=3, column=33)
1458
 
    Token(typ='END', value=';', line=3, column=41)
1459
 
    Token(typ='ID', value='tax', line=4, column=8)
1460
 
    Token(typ='ASSIGN', value=':=', line=4, column=12)
1461
 
    Token(typ='ID', value='price', line=4, column=15)
1462
 
    Token(typ='OP', value='*', line=4, column=21)
1463
 
    Token(typ='NUMBER', value='0.05', line=4, column=23)
1464
 
    Token(typ='END', value=';', line=4, column=27)
1465
 
    Token(typ='ENDIF', value='ENDIF', line=5, column=4)
1466
 
    Token(typ='END', value=';', line=5, column=9)