欢迎访问宙启技术站
智能推送

正则表达式在Python中的应用实例

发布时间:2023-06-26 22:30:16

正则表达式是一种匹配字符串模式的工具,它可以用来检测一个字符串是否符合某种特定的规则。在 Python 中,正则表达式模块是 re,通过使用 re 模块,我们可以有效地处理文本和数据。

下面是正则表达式在 Python 中的一些应用实例:

1. 邮箱验证

邮箱地址的格式通常是 username@domain.com,其中 username 和 domain 是由字母、数字、下划线和点号组成的。我们可以使用正则表达式来验证一个邮箱地址是否合法。

import re

def validate_email(email):
    pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
    return bool(re.match(pattern, email))

print(validate_email('example@email.com'))  # True
print(validate_email('example-email.com'))  # False

2. 手机号码验证

手机号码的格式通常是 11 位数字。我们可以使用正则表达式来验证一个手机号码是否合法。

import re

def validate_phone_number(phone):
    pattern = r'^\d{11}$'
    return bool(re.match(pattern, phone))

print(validate_phone_number('13812345678'))  # True
print(validate_phone_number('1381234567'))  # False

3. IP 地址验证

IP 地址的格式通常是四个数字,每个数字的取值范围是 0~255,数字之间用点号分隔开。我们可以使用正则表达式来验证一个 IP 地址是否合法。

import re

def validate_ip_address(ip):
    pattern = r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$'
    if not re.match(pattern, ip):
        return False
    parts = ip.split('.')
    for part in parts:
        if int(part) > 255:
            return False
    return True

print(validate_ip_address('192.168.0.1'))  # True
print(validate_ip_address('256.168.0.1'))  # False

4. URL 地址解析

URL 地址通常由协议、主机名、端口号、路径和查询参数组成。我们可以使用正则表达式来解析一个 URL 地址并得到其中的各个部分。

import re

def parse_url(url):
    pattern = r'^(https?):\/\/([\w.-]+)(:(\d+))?([\/\w.-]*)?(\?([\w=&]+))?$'
    match = re.match(pattern, url)
    if not match:
        return None
    protocol = match.group(1)
    hostname = match.group(2)
    port = match.group(4) or ('80' if protocol == 'http' else '443')
    path = match.group(5) or '/'
    query = match.group(7) or ''
    return {
        'protocol': protocol,
        'hostname': hostname,
        'port': port,
        'path': path,
        'query': query,
    }

url = 'https://www.example.com:8080/foo/bar?name=hello&age=18'
print(parse_url(url))  # {'protocol': 'https', 'hostname': 'www.example.com', 'port': '8080', 'path': '/foo/bar', 'query': 'name=hello&age=18'}

在实际开发中,我们经常需要使用正则表达式来匹配和处理各种文本和数据,Python 的 re 模块提供了非常便捷和强大的工具来完成这个任务。