Last modified: Nov 08, 2024 By Alexander Williams

Python re.search: Finding Pattern Matches in Strings

The re.search() function in Python is a powerful tool for finding pattern matches within strings. Unlike re.match(), it searches for matches anywhere in the string.

Basic Syntax and Usage

The basic syntax of re.search() involves two main parameters: the pattern to search for and the string to search within.


import re

text = "Python is awesome"
result = re.search("is", text)
print(result)




Using Regular Expression Patterns

You can use regular expression patterns to make your searches more flexible and powerful.


# Search for words starting with 'P'
text = "Python programming is fun"
result = re.search(r"P\w+", text)
print(result.group())


Python

Working with Groups

re.search() allows you to capture groups within your pattern matches using parentheses.


text = "Email: user@example.com"
pattern = r"(\w+)@(\w+)\.(\w+)"
result = re.search(pattern, text)
print(f"Username: {result.group(1)}")
print(f"Domain: {result.group(2)}")
print(f"TLD: {result.group(3)}")


Username: user
Domain: example
TLD: com

Handling No Matches

When re.search() doesn't find a match, it returns None. It's important to handle this case in your code.


text = "Hello World"
result = re.search(r"Python", text)
if result:
    print("Pattern found:", result.group())
else:
    print("Pattern not found")


Pattern not found

Case-Insensitive Search

You can perform case-insensitive searches using the re.IGNORECASE flag or its shorthand form, re.I.


text = "PYTHON is Amazing"
result = re.search(r"python", text, re.IGNORECASE)
print(result.group())


PYTHON

Common Use Cases

The re.search() function is particularly useful for tasks like validating email addresses, finding phone numbers, or extracting specific patterns from text.


# Phone number validation
phone = "Call me at 123-456-7890"
pattern = r"\d{3}-\d{3}-\d{4}"
result = re.search(pattern, phone)
print("Valid phone number:", result.group())


Valid phone number: 123-456-7890

Conclusion

re.search() is an essential tool for pattern matching in Python. It offers flexibility in searching patterns anywhere within strings and provides powerful features for text processing.

Remember to always handle potential None returns and use appropriate regular expression patterns for your specific use case.