Python: Regex Basics
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 toTrue
) [see Python Regex Match Object]
# 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.
# 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.
# 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>
- The first argument to “re.sub” is a regex pattern.
- The second argument is the replacement string, which can contain captured pattern (the
\1
) - The third argument is the text to be checked.
- Optional 4th argument is number of replacement to make. If omitted, it replace all occurrences of matches.
You should use r
to quote your regex pattern string, so any backslash such as are not interpreted. [see Python: Quote String]