0Pricing
Python Academy · Lesson

re.sub, Flags, and Compiled Patterns

Replace text, use flags like IGNORECASE, and compile patterns for reuse.

re.sub, Flags, and Compiled Patterns is a free Python Academy lesson on CoddyKit — lesson 4 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Python Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Introduction

re.sub replaces matches. Flags modify matching behavior. Compiled patterns are efficient for repeated use.

re.sub Basic

re.sub(pattern, repl, string) replaces all matches with repl. The 4th arg count= limits replacements.
import re
result = re.sub(r'\d+', 'X', 'abc 123 def 456')
print(result)

re.sub with Groups

Use \1, \2 or \g<1> in replacement to insert captured groups. \g for named groups.
import re
# Swap first and last name
result = re.sub(r'(\w+),\s*(\w+)', r'\2 \1', 'Smith, John')
print(result)

re.sub with Function

The replacement can be a callable: f(match) → replacement string. Enables complex transformations.
import re
def double_num(m): return str(int(m.group())*2)
result = re.sub(r'\d+', double_num, '1 cats and 2 dogs')
print(result)

re.IGNORECASE (re.I)

Makes the pattern case-insensitive. r'hello' with re.I matches 'HELLO', 'Hello', etc.
import re
print(re.findall(r'hello', 'Hello HELLO hello', re.I))

re.MULTILINE (re.M)

Makes ^ and $ match start/end of each LINE rather than the entire string.
import re
text = 'first\nsecond\nthird'
print(re.findall(r'^\w+', text, re.M))

re.DOTALL (re.S)

Makes . match newlines too. Without it, . stops at line boundaries.
import re
text = 'line1\nline2'
print(re.search(r'line1.line2', text, re.S).group())

re.VERBOSE (re.X)

Allows comments and whitespace in the pattern for readability. Spaces are ignored; use \ + space for literal space.
import re
pattern = re.compile(r'''
    (?P<year>\d{4})   # year
    -
    (?P<month>\d{2}) # month
    -
    (?P<day>\d{2})   # day
''', re.X)
print(pattern.search('2024-01-15').groupdict())

Combining Flags

Combine flags with |: re.I | re.M. Or use inline flags (?im) at the start of the pattern.
import re
print(re.findall(r'^\w+', 'Hello\nWorld', re.I | re.M))

re.compile for Performance

Compile a pattern once with re.compile(). Call methods on the compiled object: pat.search(), pat.findall().
import re
email_re = re.compile(r'[\w.+-]+@[\w-]+\.[\w.]+')
emails = ['user@example.com', 'invalid', 'test@test.org']
print([e for e in emails if email_re.fullmatch(e)])

re.escape()

re.escape(string) escapes all special regex characters in a string, so it can be used as a literal pattern.
import re
user_input = 'price.is $10+'
pattern = re.compile(re.escape(user_input))
text = 'The price.is $10+ today'
print(bool(pattern.search(text)))

Quick Check

Which flag makes . match newlines in Python regex?

Recap

re.sub: replace with string, groups, or function. Flags: re.I (case), re.M (multiline ^/$), re.S (dot matches \n), re.X (verbose). Compile for reuse.

Keep Going

Great work! The next lesson awaits.

Frequently asked questions

Is the “re.sub, Flags, and Compiled Patterns” lesson free?

Yes — the full text of “re.sub, Flags, and Compiled Patterns” is free to read here on the web, and the Python Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Python Academy course, upgrade to CoddyKit PRO.

What will I learn in “re.sub, Flags, and Compiled Patterns”?

Replace text, use flags like IGNORECASE, and compile patterns for reuse. You practise Python Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start Python Academy?

No prior experience is required. Python Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 4 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “re.sub, Flags, and Compiled Patterns” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this Python Academy lesson?

Yes. Every Python Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. Regex Fundamentals
  2. Using re.match, re.search, re.findall
  3. Groups and Named Captures
  4. re.sub, Flags, and Compiled Patterns
← Back to Python Academy