bugl
bugl
HomeLearnPatternsPathsSearch
HomeLearnPatternsPathsSearch

Loading lesson path

Learn/Python/Foundations
Python•Foundations

Python RegEx

Flash cards

Review the key moves

1/4
Core idea

What is the main idea behind Python RegEx?

Lesson checks

Practice each idea before moving on

Short Mimo-style checks built from this lesson's code, terms, and sequence.

1Quick choice

Which statement best captures the main point of this lesson?

2Order

Put the learning moves in the order that makes the concept easiest to apply.

The split() Function
The search() Function
The findall() Function

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

import re

RegEx in Python

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

Example

import
re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)

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:

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

Flags

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

FlagShorthandDescription
re.ASCIIre.AReturns only ASCII matches
re.DEBUGReturns debug information
re.DOTALLre.SMakes the . character match all characters (including newline character)
re.IGNORECASEre.ICase-insensitive matching
re.MULTILINEre.MReturns matches at the start/end of each line
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 matches
re.VERBOSEre.XAllows whitespaces and comments inside patterns. Makes the pattern more readable

Special Sequences

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

CharacterDescriptionExample
\AReturns a match if the specified characters are at the beginning of the string"\AThe"
\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"
\DReturns a match where the string DOES NOT contain digits"\D"
\sReturns a match where the string contains a white space character"\s"
\SReturns a match where the string DOES NOT contain a white space character"\S"
\wReturns a match where the string contains any word characters (characters from a to Z, digits from 0-9, and the underscore _ character)"\w"
\WReturns a match where the string DOES NOT contain any word characters"\W"
\ZReturns a match if the specified characters are at the end of the string"Spain\Z"

Sets

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

SetDescription
[arn]Returns a match where one of the specified characters ( a , r , or n ) is present
[a-n]Returns a match for any lower case character, alphabetically between a and n
[^arn]Returns a match for any character EXCEPT a , r , and n
[0123]Returns a match where any of the specified digits ( 0 , 1 , 2 , or 3 ) are present
[0-9]Returns a match for any digit between 0 and 9
[0-5][0-9]Returns a match for any two-digit numbers from 00 and 59
[a-zA-Z]Returns a match for any character alphabetically between a and z , lower case OR upper case

The findall() Function

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

Example

import re
txt = "The rain in Spain"
x = re.findall("ai",
txt)

print(x)

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

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

Example

import re
txt = "The rain in Spain"
x = re.findall("Portugal",
txt)

print(x)

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:

Example

import re
txt = "The rain in Spain"
x = re.search("\s",
txt)

print("The first white-space character is located in
position:", x.start())

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

Example

import re
txt = "The rain in Spain"
x = re.search("Portugal",
txt)

print(x)

The split() Function

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

Example

import re
txt = "The rain in Spain"
x = re.split("\s",
txt)

print(x)

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

Example

import re
txt = "The rain in Spain"
x = re.split("\s",
txt,
1)

print(x)

The sub() Function

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

Example

import re
txt = "The rain in Spain"
x = re.sub("\s",
"9", txt)

print(x)

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

Example

import re
txt = "The rain in Spain"
x = re.sub("\s",
"9", txt, 2)

print(x)

Match Object

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

Note

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

Example

import re
txt = "The rain in Spain"
x = re.search("ai",
txt)

print(x) #this will print an object

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

Example

import re

txt = "The rain in Spain"

x = re.search(r"\bS\w+", txt)

print(
x.span()
)

Example

import re

txt = "The rain in Spain"

x = re.search(r"\bS\w+", txt)

print(
x.string
)

Example

import re

txt = "The rain in Spain"

x = re.search(r"\bS\w+", txt)

print(
x.group()
)

Note

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

Previous

Python JSON

Next

Python PIP