DEV Community

hrishikesh1990
hrishikesh1990

Posted on • Originally published at flexiple.com

Python regex: How to search and replace strings

In this tutorial, you will learn about how to use regex (or regular expression) to do a search and replace operations on strings in Python.

Regex can be used to perform various tasks in Python. It is used to do a search and replace operations, replace patterns in text, check if a string contains the specific pattern. But today we will learn about performing search and replace operations using regex.

Table of contents

Python regex replace

Python has a built-in module called re, which helps in searching and replacing. In order to use re, we need to import the module at the beginning of our code.

import re
Enter fullscreen mode Exit fullscreen mode

Now we'll learn about the search and replace operation using regex.

Regex to search and replace

The regex method searches a string and then replace it with some other value. Python re.sub() function in the re module is used to do so.

Syntax:

re.sub(pattern, replacement, string, count=0, flags=0)
Enter fullscreen mode Exit fullscreen mode

First of all, let us understand what all these parameters mean:

pattern: The regular expression you want to search and find inside the given string in Python.

string: The variable that contains the given string on which you want to perform the operation.

count: If the pattern occurs multiple times in the string, the number of times you want to you want it to be replaced. The default value is 0. It is optional.

flags: The regex flags are optional.

Input:

import re  

str = "xyz@gmail.com"
print(re.sub("[a-z]*@", "abc@", str))
Enter fullscreen mode Exit fullscreen mode

Output:

abc@gmail.com
Enter fullscreen mode Exit fullscreen mode

Replacing multiple patterns using regex

We can use regex to replace multiple patterns at one time using regex. This can be easily done using the following syntax.

Syntax:

re.sub(pattern_1 | pattern_2, replacement, string, count=0, flags=0)
Enter fullscreen mode Exit fullscreen mode

Input:

import re  

str = "Joe-Kim Ema Max Aby Liza"
print(re.sub("(\s) | (-)", ", ", str))
Enter fullscreen mode Exit fullscreen mode

Output:

"Joe, Kim, Ema, Max, Aby, Liza"
Enter fullscreen mode Exit fullscreen mode

Replacing multiple patterns with multiple replacements using regex

Now, if ever, you want to replace multiple patterns but with different replacements then also regex can be used. It can be done with a minor modification which you can see in the following example.

Input:

import re  

def convert_case(match_obj):
  if match_obj.group(1) is not None:
    return match_obj.group(1).lower()
  if match_obj.group(2) is not None:
    return match_obj.group(2).upper()

str = "jOE kIM mAx ABY lIzA"
print(re.sub(r"([A-Z]+) | ([a-z]+)", convert_case, str))
Enter fullscreen mode Exit fullscreen mode

In this example, the string contains Uppercase and lowercase that we need to replace. We need to replace the uppercase with the lowercase and vice versa.

In order to do that, we will make two groups and then add a function for the replacement.

Output:

"Joe Kim MaX aby LiZa"
Enter fullscreen mode Exit fullscreen mode




Closing thoughts

To replace a string in Python, the regex sub() method is used. It is a built-in Python method in re module that returns replaced string. Don't forget to import the re module. This method searches the pattern in the string and then replace it with a new given expression. One can learn about more Python concepts here.

Top comments (0)