Python教学:正则表达式中的match 和fullmatch的经典使用-由Deepseek产生

以下是 Python 正则表达式中 match 和 fullmatch 的 4 个经典案例,每个案例都包含数据提取的实际应用。


案例 1:提取日期(年-月-日)------ 使用 match

场景 :从字符串开头匹配并提取 YYYY-MM-DD 格式的日期。
方法 :re.match(要求从起始位置匹配)。

python 复制代码
import re

text = "2025-12-25 是圣诞节"
pattern = r"(\d{4})-(\d{2})-(\d{2})"

match = re.match(pattern, text)
if match:
    year, month, day = match.groups()
    print(f"年: {year}, 月: {month}, 日: {day}")
else:
    print("未匹配")

输出:

复制代码
年: 2025, 月: 12, 日: 25

案例 2:验证完整的邮箱地址 ------ 使用 fullmatch

场景 :检查整个字符串是否为一个合法的邮箱(基础验证)。
方法 :re.fullmatch(要求整个字符串完全匹配)。

python 复制代码
import re

email = "user_123@example.com"
pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"

match = re.fullmatch(pattern, email)
if match:
    print(f"有效邮箱: {match.group()}")
    # 提取用户名和域名(需要分组)
    pattern2 = r"([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})"
    parts = re.fullmatch(pattern2, email)
    print(f"用户名: {parts.group(1)}, 域名: {parts.group(2)}")
else:
    print("无效邮箱")

输出:

复制代码
有效邮箱: user_123@example.com
用户名: user_123, 域名: example.com

案例 3:提取电话号码(美国格式)------ 使用 match

场景 :字符串开头为 (XXX) XXX-XXXX 或 XXX-XXX-XXXX 格式的电话号码。
方法 :re.match + 可选分组提取区号和号码。

python 复制代码
import re

text = "(123) 456-7890 转分机"
pattern = r"\(?(\d{3})\)?[- ]?(\d{3})-(\d{4})"

match = re.match(pattern, text)
if match:
    area, first, last = match.groups()
    print(f"区号: {area}, 号码: {first}-{last}")
else:
    print("未匹配")

输出:

复制代码
区号: 123, 号码: 456-7890

案例 4:验证 IPv4 地址 ------ 使用 fullmatch

场景 :检查整个字符串是否为合法的 IPv4 地址(0-255 范围)。
方法 :re.fullmatch + 提取四个字节的数值。

python 复制代码
import re

ip = "192.168.1.100"
# 每个字段:0-255(避免前导零过复杂,这里简化但覆盖范围)
pattern = r"(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"

match = re.fullmatch(pattern, ip)
if match:
    a, b, c, d = map(int, match.groups())
    print(f"IP 合法: {a}.{b}.{c}.{d}")
else:
    print("非法 IP")

输出:

复制代码
IP 合法: 192.168.1.100

总结:match vs fullmatch

方法 匹配要求 典型用途
match 从字符串开头匹配,不要求匹配到结尾 提取开头的固定格式数据(如日期、ID)
fullmatch 要求整个字符串完全匹配 验证用户输入、检查字符串是否完全符合规则

以上案例展示了两种方法的典型应用,并演示了如何通过分组提取关键数据。

相关推荐
vx_Biye_Design3 分钟前
springboot旅游管理系统18006-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·django·课程设计
半亩码田10 分钟前
C#转Python第4.7篇:logging:Python 的标准日志库
开发语言·python·c#
外收内放33 分钟前
Python基础语法练习题(59-原始版本与优化版本)
开发语言·python
ASS-ASH35 分钟前
从力学与机械原理角度深度剖析:尊界V800刹车踏板支架断裂事件的技术逻辑
人工智能·python·数据可视化·机械工程·汽车安全·物理仿真·制动系统
xhy_070736 分钟前
AI 读了 .env,密钥会原样发给大模型吗?WES Code 的密钥打码(附实测)
人工智能·python·数据挖掘·flask·ai编程·wes code
泡海椒44 分钟前
JQuick-Excel 实战:用 STYLE 配置单元格与区域样式
开发语言·python·excel
威联通网络存储1 小时前
TS-h1283XU-RP 在医药批记录与检验场景的部署
网络·python
Patrick在香港1 小时前
时间戳凭空早了 8 小时:datetime.utcnow() 弃用实测与漂移复盘
数据库·python·标准库·datetime·时区·弃用
东莞市云毅网络有限公司7 小时前
AI 引用句逐条回指原文:让回答可回溯的校验实现
python·数据清洗·rag·企业知识库·文档解析
数字融合9 小时前
透明化视频三维矿山井下照明重建技术
人工智能·python·数码相机