Hoewel gewoonlijk reguliere expressies alleen gebruikt worden om naar patronen te zoeken, kun je ze ook gebruiken om substrings in een string te vervangen door andere substrings. Dit doe je met de sub() methode. sub() krijgt als argumenten het patroon dat je wilt vervangen, het patroon waarmee je wilt vervangen, en de string. sub() retourneert de nieuwe string (bedenk dat strings onveranderbaar zijn, dus sub() maakt geen wijziging in de string, zelfs niet als die in een variabele staat; als je de nieuwe string wilt gebruiken moet je hem zelf in een variabele stoppen).

De vervanging is meestal gewoon een string, maar er kunnen verwijzingen in staan naar groepen in het eerste patroon. Je moet dan een formaat gebruiken dat verschilt van het \x formaat dat ik hierboven beschreef. Als je wilt refereren aan groep x in het patroon (waarbij x een getal is), dan schrijf je \g<x> (ook hier moet je de < en > in het patroon opnemen). De reden voor dit verschil is ondubbelzinnigheid; het maakt het mogelijk om verschil te maken tussen, bijvoorbeeld, een referentie naar groep 2 gevolgd door het teken 0, en een referentie naar groep 20.

import re

s = re.sub( r"([iy])z(eert)", "\g<1>s\g<2>", "Of je nu \
categorizeert, rationalizeert, of analyzeert, je moet \
een s gebruiken!" )
print( s )