Understanding Regex in Python: A Practical Example
Intro
Regular expressions, commonly known as regex, are powerful tools for pattern matching and text manipulation. They allow developers to search, match, and manipulate strings with precision. In this blog post, we'll explore how regex is used in Python through a practical example from a customer validation function.
The Context
Consider a scenario where we need to validate customer information, specifically their first name, last name, and mobile number. The following code snippet demonstrates how regex is used to validate a mobile number in a Python class:
from sqlalchemy.orm import validates import re class Customer: @validates('first_name', 'last_name', 'mobile') def validate(self, key, value): if key == 'first_name' or key == 'last_name': if len(value) == 0: raise ValueError(f'Server validation error: No {"first name" if key == "first_name" else "last name"}') elif key == 'mobile': mobile = r"((([\(]?[0-9]{3,4}[\)]\s?)|([0-9]{3,4}[\-]))[0-9]{3,4}[\-][0-9]{4})|([0-9]{10,12})" mobile_regex = re.compile(mobile) if not mobile_regex.fullmatch(value): raise ValueError('Server validation error: Invalid mobile number') return value
Breaking Down the Regex
In the validate method, we use regex to ensure that the mobile number provided by the customer adheres to a specific format. Let's break down the regex pattern used:
mobile = r"((([\(]?[0-9]{3,4}[\)]\s?)|([0-9]{3,4}[\-]))[0-9]{3,4}[\-][0-9]{4})|([0-9]{10,12})"
Parentheses and Hyphens:
([(]?[0-9]{3,4}[)]s?): This part of the regex matches an optional opening parenthesis (, followed by 3 or 4 digits, an optional closing parenthesis ), and an optional space.
([0-9]{3,4}[-]): This part matches 3 or 4 digits followed by a hyphen -.
Main Number:
[0-9]{3,4}[-][0-9]{4}: This part matches 3 or 4 digits, a hyphen, and then 4 digits.
Alternative Format:
([0-9]{10,12}):
This part matches a sequence of 10 to 12 digits, allowing for a more compact mobile number format without separators.
Using Regex for Validation
The regex pattern is compiled using re.compile(mobile), and the fullmatch method is used to check if the entire string matches the pattern:
mobile_regex = re.compile(mobile) if not mobile_regex.fullmatch(value): raise ValueError('Server validation error: Invalid mobile number')
If the mobile number does not match the regex pattern, a ValueError is raised, indicating an invalid mobile number.
Conclusion
Regex is a versatile tool for string validation and manipulation. In this example, we used regex to validate a mobile number, ensuring it adheres to specific formats. By understanding and utilizing regex, developers can perform complex string operations with ease and precision.
Whether you're validating user input, searching for patterns in text, or performing text manipulation, regex provides a robust solution for your needs. Happy coding!
The above is the detailed content of Understanding Regex in Python: A Practical Example. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Solution to permission issues when viewing Python version in Linux terminal When you try to view Python version in Linux terminal, enter python...

How to avoid being detected when using FiddlerEverywhere for man-in-the-middle readings When you use FiddlerEverywhere...

When using Python's pandas library, how to copy whole columns between two DataFrames with different structures is a common problem. Suppose we have two Dats...

How to teach computer novice programming basics within 10 hours? If you only have 10 hours to teach computer novice some programming knowledge, what would you choose to teach...

How does Uvicorn continuously listen for HTTP requests? Uvicorn is a lightweight web server based on ASGI. One of its core functions is to listen for HTTP requests and proceed...

Using python in Linux terminal...

Fastapi ...

Understanding the anti-crawling strategy of Investing.com Many people often try to crawl news data from Investing.com (https://cn.investing.com/news/latest-news)...
