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:

re.search(pattern, 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]
# python 3

# regex matching email email address

import re

text = "this xyz@example.com that"
xx = re.search(r" (\w+@\w+\.com) ", text )

if xx:
    print("matched")
    print(xx.group(1))
else:
    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.

# python 3

# example of regex replace

import re

myText = "123123";

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

print(newText)
# 183183

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

# python 3

# 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=
"bird.gif">!</p>"""

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

print(newText)

# <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

Python

Regex

Text Processing

Web

Misc