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
- Regex to search and replace
- Replacing multiple patterns using regex
- Replacing multiple patterns with multiple replacements using regex
- Closing thoughts
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
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)
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))
Output:
abc@gmail.com
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)
Input:
import re
str = "Joe-Kim Ema Max Aby Liza"
print(re.sub("(\s) | (-)", ", ", str))
Output:
"Joe, Kim, Ema, Max, Aby, Liza"
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))
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"
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)