Python Tutorials · Python RegEx

Python RegEx

Learn all about Python RegEx in this comprehensive tutorial.

5 min read advanced
  • A RegEx, or Regular Expression, is a sequence of characters that forms a search pattern.
  • Python has a built-in package called re, which can be used to work with Regular Expressions.
  • When you have imported the re module, you can start using regular expressions:
  • The re module offers a set of functions that allows us to search a string for a match:
  • Metacharacters are characters with a special meaning:
  • You can add flags to the pattern when using regular expressions.
  • A special sequence is a \ followed by one of the characters in the list below, and has a special meaning:
  • A set is a set of characters inside a pair of square brackets [] with a special meaning:
  • The findall() function returns a list containing all matches.
  • The search() function searches the string for a match, and returns a Match object if there is a match.
  • The split() function returns a list where the string has been split at each match:
  • The sub() function replaces the matches with the text of your choice:
  • A Match Object is an object containing information about the search and the result.

Introduction

A RegEx, or Regular Expression, is a sequence of characters that forms a search pattern.

RegEx can be used to check if a string contains the specified search pattern.

RegEx Module

Python has a built-in package called re, which can be used to work with Regular Expressions.

Import the re module:

python

RegEx in Python

When you have imported the re module, you can start using regular expressions:

python

RegEx Functions

The re module offers a set of functions that allows us to search a string for a match:

FunctionDescription
findallReturns a list containing all matches
searchReturns a Match object if there is a match anywhere in the string
splitReturns a list where the string has been split at each match
subReplaces one or many matches with a string

Metacharacters

Metacharacters are characters with a special meaning:

CharacterDescriptionExampleTry it
[]A set of characters"[a-m]"Try it »
\Signals a special sequence (can also be used to escape special characters)"\d"Try it »
.Any character (except newline character)"he..o"Try it »
^Starts with"^hello"Try it »
$Ends with"planet$"Try it »
*Zero or more occurrences"he.*o"Try it »
+One or more occurrences"he.+o"Try it »
?Zero or one occurrences"he.?o"Try it »
{}Exactly the specified number of occurrences"he.{2}o"Try it »
|Either or"falls|stays"Try it »
()Capture and group

Flags

You can add flags to the pattern when using regular expressions.

FlagShorthandDescriptionTry it
re.ASCIIre.AReturns only ASCII matchesTry it »
re.DEBUGReturns debug informationTry it »
re.DOTALLre.SMakes the . character match all characters (including newline character)Try it »
re.IGNORECASEre.ICase-insensitive matchingTry it »
re.MULTILINEre.MReturns matches at the start/end of each lineTry it »
re.NOFLAGSpecifies that no flag is set for this pattern
re.UNICODEre.UReturns Unicode matches. This is default from Python 3. For Python 2: use this flag to return only Unicode matchesTry it »
re.VERBOSEre.XAllows whitespaces and comments inside patterns. Makes the pattern more readableTry it »

Special Sequences

A special sequence is a \ followed by one of the characters in the list below, and has a special meaning:

CharacterDescriptionExampleTry it
\AReturns a match if the specified characters are at the beginning of the string"\AThe"Try it »
\bReturns a match where the specified characters are at the beginning or at the end of a word(the "r" in the beginning is making sure that the string is being treated as a "raw string")r"\bain"r"ain\b"Try it » Try it »
\BReturns a match where the specified characters are present, but NOT at the beginning (or at the end) of a word(the "r" in the beginning is making sure that the string is being treated as a "raw string")r"\Bain"r"ain\B"Try it » Try it »
\dReturns a match where the string contains digits (numbers from 0-9)"\d"Try it »
\DReturns a match where the string DOES NOT contain digits"\D"Try it »
\sReturns a match where the string contains a white space character"\s"Try it »
\SReturns a match where the string DOES NOT contain a white space character"\S"Try it »
\wReturns a match where the string contains any word characters (characters from a to Z, digits from 0-9, and the underscore _ character)"\w"Try it »
\WReturns a match where the string DOES NOT contain any word characters"\W"Try it »
\ZReturns a match if the specified characters are at the end of the string"Spain\Z"Try it »

Sets

A set is a set of characters inside a pair of square brackets [] with a special meaning:

SetDescriptionTry it
[arn]Returns a match where one of the specified characters (a, r, or n) is presentTry it »
[a-n]Returns a match for any lower case character, alphabetically between a and nTry it »
[^arn]Returns a match for any character EXCEPT a, r, and nTry it »
[0123]Returns a match where any of the specified digits (0, 1, 2, or 3) are presentTry it »
[0-9]Returns a match for any digit between 0 and 9Try it »
[0-5][0-9]Returns a match for any two-digit numbers from 00 and 59Try it »
[a-zA-Z]Returns a match for any character alphabetically between a and z, lower case OR upper caseTry it »
[+]In sets, +, *, ., |, (), $,{} has no special meaning, so [+] means: return a match for any + character in the stringTry it »

The findall() Function

The findall() function returns a list containing all matches.

python

The list contains the matches in the order they are found.

If no matches are found, an empty list is returned:

python

The search() Function

The search() function searches the string for a match, and returns a Match object if there is a match.

If there is more than one match, only the first occurrence of the match will be returned:

python

If no matches are found, the value None is returned:

python

The split() Function

The split() function returns a list where the string has been split at each match:

python

You can control the number of occurrences by specifying the maxsplit parameter:

python

The sub() Function

The sub() function replaces the matches with the text of your choice:

python

You can control the number of replacements by specifying the count parameter:

python

Match Object

A Match Object is an object containing information about the search and the result.

Note: Note: If there is no match, the value None will be returned, instead of the Match Object.
python

The Match object has properties and methods used to retrieve information about the search, and the result:

.span() returns a tuple containing the start-, and end positions of the match. .string returns the string passed into the function .group() returns the part of the string where there was a match

python
python
python
Note: Note: If there is no match, the value None will be returned, instead of the Match Object.

Module quiz

2 questions
1

Which of the following is true about Python RegEx?

2

What is the most common pitfall when working with Python RegEx?

Answer all questions to submit.