What Python regular expression can be used in place of string.replace?

In this article, we are going to discuss how to use regular expressions in place of the string.replace() method. As you may know, Python's built-in string.replace() method is used to replace given substrings in a string. But when we need more complex replacement features, Python's re (regular expressions) module is very helpful.

Regular expressions allow us to search for patterns and replace them with precise values, which makes string manipulation simpler and more flexible.

Why Use Regular Expressions?

While string.replace() works well for simple tasks, it has its limitations. It can only replace exact substrings and has limited ability to use pattern matching.

On the other hand, regular expressions can match complex patterns and use special characters like \d (digits), \w (word characters), etc., for more dynamic replacements.

Using re.sub() for String Replacement

The re.sub() function is the primary regular expression method for replacing text patterns. Let's explore different examples to see how you can use regular expressions in place of the string.replace() method in Python.

Basic Replacement

Here we will show you the basic usage of re.sub() function, where it will replace all occurrences of 'apple' with 'Mango' ?

import re

# Using re.sub to replace
text = "I like apple and apple shake."
result = re.sub(r'apple', 'Mango', text)

print(result) 

The output of the above code is ?

I like Mango and Mango shake.

Case-Insensitive Replacement

This example shows case insensitivity. By using flags=re.IGNORECASE, "Apple" and "apple" will both be replaced with "Mango" ?

import re

# Case-insensitive replacement
text = "I like Apple and apple juice."
result = re.sub(r'apple', 'Mango', text, flags=re.IGNORECASE)

print(result) 

The output of the above code is ?

I like Mango and Mango juice.

Pattern-Based Replacement

In the example below, we will replace all digits present in the given string with the word 'number'. This shows how to use regex to dynamically match and replace patterns that are not static strings ?

import re

# Replace all digits
text = "I have 2 apples and 3 bananas."
result = re.sub(r'\d+', 'number', text)

print(result)

The output of the above code is ?

I have number apples and number bananas.

Dynamic Replacement with Functions

In this example, we will define a replace_with_square() function that accepts a match object, finds the matched integer, squares it, and returns the result as a string ?

import re

# Function to replace matched pattern
def replace_with_square(match):
    number = int(match.group())
    return str(number ** 2)

text = "The numbers are 2, 3, and 4."
result = re.sub(r'\d+', replace_with_square, text)

print(result) 

The output of the above code is ?

The numbers are 4, 9, and 16.

Comparison

Here is a comparison table that shows the differences between the string.replace() and re.sub() methods ?

Feature replace() re.sub() (regex)
Fixed text replacement Yes Yes
Pattern matching No Yes (powerful and flexible)
Case insensitive No (without extra code) Yes (with flags=re.IGNORECASE)
Dynamic replacement No Yes (use functions and groups)
Performance Faster for simple text Slower but more powerful

Conclusion

Use re.sub() when you need pattern matching, case-insensitive replacement, or dynamic text transformation. For simple exact-string replacements, string.replace() remains faster and more straightforward.

Updated on: 2026-03-24T19:02:35+05:30

279 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements