Python: Regex Basics

By Xah Lee. Date: . Last updated: .

Check If String Match

To use regex in Python, first you need to import re.

To check if a pattern is in string, use:, str, flags)
If pattern matches (part or whole of a string), then a Match Object is returned. Else, Returns None. (Match Object evaluates to True) [see Python Regex Match Object]
# regex matching email email address

import re

text = "this that"
xx =" (\w+@\w+\.com) ", text )

if xx:
    print("no match")

For how to use regex flags, such as ignore case, see: Python Regex Flags .

Find and Replace

sub(pattern, repl, string)
Substitute pattern in string by the replacement repl. If the pattern isn't found, string is returned unchanged. Returns a new string.

Here's a example of using regex to replace text.

# example of regex replace

import re

myText = "123123";

newText = re.sub(r"2", r"8", myText)

# 183183

Here's a more complex example, replacing all “gif” image paths to “png” in HTML file.

# regex example of replacing gif to png in html img tag

import re

myText = r"""<p><img src="rabbits.gif" width="30" height="20">
and <img class="xyz" src="../cats.gif">,
but <img src ="tigers.gif">,
 <img src=

newText = re.sub(r'src\s*=\s*"([^"]+)\.gif"', r'src="\1.png"', myText)


# <p><img src="rabbits.png" width="30" height="20">
# and <img class="xyz" src="../cats.png">,
# but <img src="tigers.png">,
#  <img src="bird.png">!</p>

You should use r to quote your regex pattern string, so any backslash such as are not interpreted. [see Python: Quote String]

Split Line by Regex

Python: Split Line by Regex

Python Regular Expression



Text Processing