Regex Cheat Sheet Python



Above visualization is a screenshot created usingdebuggexfor the patternr'bpar(en|ro)?tb'

Python RegEx use a backslash ( )to indicate a special sequence or as an escape character. This collides with Python’s usage of the backslash ( ) for the same purpose in string lateral. Thus, the raw string here is used to avoid confusion between the two. Besides that, it also helps us in making our pattern shorter. Welcome to Python Cheatsheet! Anyone can forget how to make character classes for a regex, slice a list or do a for loop.This cheat sheet tries to provide a basic reference for beginner and advanced developers, lower the entry barrier for newcomers and help veterans refresh the old tricks.

Regex Cheat Sheet Python 3


From docs.python: re:

A regular expression (or RE) specifies a set of strings that matches it; the functions in this module let you check if a particular string matches a given regular expression

This blog post gives an overview and examples of regular expression syntax as implemented by the re built-in module (Python 3.8+). Assume ASCII character set unless otherwise specified. This post is an excerpt from my Python re(gex)? book.

Elements that define a regular expression🔗

AnchorsDescription
Arestricts the match to the start of string
Zrestricts the match to the end of string
^restricts the match to the start of line
$restricts the match to the end of line
nnewline character is used as line separator
re.MULTILINE or re.Mflag to treat input as multiline string
brestricts the match to the start/end of words
word characters: alphabets, digits, underscore
Bmatches wherever b doesn't match

^, $ and are metacharacters in the above table, as these characters have special meaning. Prefix a character to remove the special meaning and match such characters literally. For example, ^ will match a ^ character instead of acting as an anchor.

FeatureDescription
|multiple RE combined as conditional OR
each alternative can have independent anchors
(RE)group pattern(s), also a capturing group
a(b|c)d is same as abd|acd
(?:RE)non-capturing group
(?P<name>pat)named capture group
.Match any character except the newline character n
[]Character class, matches one character among many
Greedy QuantifiersDescription
*Match zero or more times
+Match one or more times
?Match zero or one times
{m,n}Match m to n times (inclusive)
{m,}Match at least m times
{,n}Match up to n times (including 0 times)
{n}Match exactly n times
pat1.*pat2any number of characters between pat1 and pat2
pat1.*pat2|pat2.*pat1match both pat1 and pat2 in any order

Greedy here means that the above quantifiers will match as much as possible that'll also honor the overall RE. Appending a ? to greedy quantifiers makes them non-greedy, i.e. match as minimally as possible. Quantifiers can be applied to literal characters, groups, backreferences and character classes.

Character classDescription
[aeiou]Match any vowel
[^aeiou]^ inverts selection, so this matches any consonant
[a-f]- defines a range, so this matches any of abcdef characters
dMatch a digit, same as [0-9]
DMatch non-digit, same as [^0-9] or [^d]
wMatch word character, same as [a-zA-Z0-9_]
WMatch non-word character, same as [^a-zA-Z0-9_] or [^w]
sMatch whitespace character, same as [ tnrfv]
SMatch non-whitespace character, same as [^ tnrfv] or [^s]
LookaroundsDescription
lookaroundscustom assertions, zero-width like anchors
(?!pat)negative lookahead assertion
(?<!pat)negative lookbehind assertion
(?=pat)positive lookahead assertion
(?<=pat)positive lookbehind assertion
(?!pat1)(?=pat2)multiple assertions can be specified in any order
as they mark a matching location without consuming characters
((?!pat).)*Negate a grouping, similar to negated character class
FlagsDescription
re.IGNORECASE or re.Iflag to ignore case
re.DOTALL or re.Sallow . metacharacter to match newline character
flags=re.S|re.Imultiple flags can be combined using | operator
re.MULTILINE or re.Mallow ^ and $ anchors to match line wise
re.VERBOSE or re.Xallows to use literal whitespaces for aligning purposes
and to add comments after the # character
escape spaces and # if needed as part of actual RE
re.ASCII or re.Amatch only ASCII characters for b, w, d, s
and their opposites, applicable only for Unicode patterns
re.LOCALE or re.Luse locale settings for byte patterns and 8-bit locales
(?#comment)another way to add comments, not a flag
(?flags:pat)inline flags only for this pat, overrides flags argument
flags is i for re.I, s for re.S, etc, except L for re.L
(?-flags:pat)negate flags only for this pat
(?flags-flags:pat)apply and negate particular flags only for this pat
(?flags)apply flags for whole RE, can be used only at start of RE
anchors if any, should be specified after (?flags)
Matched portionDescription
re.Match objectdetails like matched portions, location, etc
m[0] or m.group(0)entire matched portion of re.Match object m
m[n] or m.group(n)matched portion of nth capture group
m.groups()tuple of all the capture groups' matched portions
m.span()start and end+1 index of entire matched portion
pass a number to get span of that particular capture group
can also use m.start() and m.end()
Nbackreference, gives matched portion of Nth capture group
applies to both search and replacement sections
possible values: 1, 2 up to 99 provided no more digits
g<N>backreference, gives matched portion of Nth capture group
possible values: g<0>, g<1>, etc (not limited to 99)
g<0> refers to entire matched portion
(?P<name>pat)named capture group
refer as 'name' in re.Match object
refer as (?P=name) in search section
refer as g<name> in replacement section
groupdictmethod applied on a re.Match object
gives named capture group portions as a dict

0 and 100 onwards are considered as octal values, hence cannot be used as backreferences.

re module functions🔗

FunctionDescription
re.searchCheck if given pattern is present anywhere in input string
Output is a re.Match object, usable in conditional expressions
r-strings preferred to define RE
Use byte pattern for byte input
Python also maintains a small cache of recent RE
re.fullmatchensures pattern matches the entire input string
re.compileCompile a pattern for reuse, outputs re.Pattern object
re.subsearch and replace
re.sub(r'pat', f, s)function f with re.Match object as argument
re.escapeautomatically escape all metacharacters
re.splitsplit a string based on RE
text matched by the groups will be part of the output
portion matched by pattern outside group won't be in output
re.findallreturns all the matches as a list
if 1 capture group is used, only its matches are returned
1+, each element will be tuple of capture groups
portion matched by pattern outside group won't be in output
re.finditeriterator with re.Match object for each match
re.subngives tuple of modified string and number of substitutions

The function definitions are given below:


Regular expression examples🔗

As a good practice, always use raw strings to construct RE, unless other formats are required. This will avoid clash of special meaning of backslash character between RE and normal quoted strings.

  • examples for re.search
  • difference between string and line anchors
  • examples for re.findall
  • examples for re.split
  • backreferencing within search pattern
  • working with matched portions
  • examples for re.finditer
  • examples for re.sub
  • backreferencing in replacement section
  • using functions in replacement section of re.sub
  • examples for lookarounds
Python
  • examples for re.compile

Regular expressions can be compiled using re.compile function, which gives back a re.Pattern object. The top level re module functions are all available as methods for this object. Compiling a regular expression helps if the RE has to be used in multiple places or called upon multiple times inside a loop (speed benefit). By default, Python maintains a small list of recently used RE, so the speed benefit doesn't apply for trivial use cases.


Python re(gex)? book🔗

Regex Cheat Sheet Python

Visit my repo Python re(gex)? for details about the book I wrote on Python regular expressions. The ebook uses plenty of examples to explain the concepts from the very beginning and step by step introduces more advanced concepts. The book also covers the third party module regex. The cheatsheet and examples presented in this post are based on contents of this book.

Use this leanpub link for a discounted price.

Regex Syntax¶

Characters
CharacterMatches
aa character
.Any character (except newline)
.. character
character
** character
Character Classes
MatchesDescription
[abcd]Any one of the letters a through dSet of characters
[^abcd]Any character but a, b, c, or dComplement of a set of characters
[a-d]Any one of the letters a through dRange of characters
[a-dz]Any of a, b, c, d, or zRange of characters

Regular Expression Cheat Sheet

Special Sequences
TypeExpressionEquivalent ToDescription
Word Characterw[a-zA-Z0-9_]Alphanumeric or underscore
Non-word CharacterW[^a-zA-Z0-9_]Anything but a word character
Digit Characterd[0-9]Numeric
Non-digit CharacterD[^0-9]Non-numeric
Whitespace Characters[tnrfv]Whitespace
Non-whitespace CharacterS[^tnrfv]Anything but a whitespace character
Anchors
AnchorMatches
^Start of the string
$End of the string
bBoundary between word and non-word characters
Groups
Group TypeExpression
Capturing( ... )
Non-capturing(?: ... )
Quantifiers/Repetition
QuantifierModification
{5}Match expression exactly 5 times
{2,5}Match expression 2 to 5 times
{2,}Match expression 2 or more times
{,5}Match expression 0 to 5 times
*Match expression 0 or more times
{,}Match expression 0 or more times
?Match expression 0 or 1 times
{0,1}Match expression 0 or 1 times
+Match expression 1 or more times
{1,}Match expression 1 or more times
Python
Non-greedy quantifiers
QuantifierModification
{2,5}?Match 2 to 5 times (less preferred)
{2,}?Match 2 or more times (less preferred)
{,5}?Match 0 to 5 times (less preferred)
*?Match 0 or more times (less preferred)
{,}?Match 0 or more times (less preferred)
??Match 0 or 1 times (less preferred)
{0,1}?Match 0 or 1 times (less preferred)
+?Match 1 or more times (less preferred)
{1,}?Match 1 or more times (less preferred)
Alternators
QuantifierModification
ABC|DEFMatch string ABC or string DEF
Lookaround
QuantifierModification
(?=abc)Zero-width match confirming abc will match upcoming chars
(?!abc)Zero-width match confirming abc will not match upcoming chars

Python¶

functions
FunctionPurposeUsage
re.searchReturn a match object if pattern found in stringre.search(r'[pat]tern','string')
re.finditerReturn an iterable of match objects (one for each match)re.finditer(r'[pat]tern','string')
re.findallReturn a list of all matched strings (different when capture groups)re.findall(r'[pat]tern','string')
re.splitSplit string by regex delimeter & return string listre.split(r'[-]','st-ring')
re.compileCompile a regular expression pattern for later usere.compile(r'[pat]tern')
flags
FlagDescription
re.IGNORECASEMatch uppercase and lowercase characters interchangeably
re.VERBOSEIgnore whitespace characters and allow # comments

I send out 1 Python exercise every week through a Python skill-building service called Python Morsels.

If you'd like to improve your Python skills every week, sign up!

Regex Cheat Sheet Python Pdf

You can find the Privacy Policy here.
reCAPTCHA protected (Google Privacy Policy & TOS)