了解 Python 中的正则表达式:一个实际示例

了解 python 中的正则表达式:一个实际示例

简介

正则表达式(Regex或Regexp)是强大的模式匹配和文本处理工具,用于精确查找、匹配和操作字符串。本文通过一个Python客户验证函数的实际案例,演示正则表达式的应用。

背景

假设需要验证客户信息,特别是姓名和手机号码。以下Python代码片段使用正则表达式验证手机号码:

立即学习“Python免费学习笔记(深入)”;

from sqlalchemy.orm import validatesimport reclass Customer:    @validates('first_name', 'last_name', 'mobile')    def validate(self, key, value):        if key in ('first_name', 'last_name'):            if not value:                raise ValueError(f'验证错误:{"名字" if key == "first_name" else "姓氏"}不能为空')        elif key == 'mobile':            mobile_pattern = r"((((d{3,4})s?)|(d{3,4}-))d{3,4}-d{4})|(d{10,12})"            mobile_regex = re.compile(mobile_pattern)            if not mobile_regex.fullmatch(value):                raise ValueError('验证错误:无效的手机号码')        return value

正则表达式详解

代码中的正则表达式mobile_pattern用于确保手机号码格式正确:

mobile_pattern = r"((((d{3,4})s?)|(d{3,4}-))d{3,4}-d{4})|(d{10,12})"

((d{3,4})s?): 匹配可选的括号内的3到4位数字,后跟一个可选空格。(d{3,4}-): 匹配3到4位数字,后跟一个连字符。d{3,4}-d{4}: 匹配3到4位数字,一个连字符,然后是4位数字。(d{10,12}): 匹配10到12位数字(更简洁的号码格式)。

验证过程

re.compile(mobile_pattern)编译正则表达式,fullmatch方法检查整个字符串是否完全匹配模式:

mobile_regex = re.compile(mobile_pattern)if not mobile_regex.fullmatch(value):    raise ValueError('验证错误:无效的手机号码')

如果不匹配,则抛出ValueError异常。

总结

正则表达式是强大的字符串验证和操作工具。本例中,它用于验证手机号码格式。掌握正则表达式能高效地进行复杂的字符串处理。 无论是用户输入验证、文本模式搜索还是文本操作,正则表达式都能提供高效的解决方案。 祝您编程愉快!

以上就是了解 Python 中的正则表达式:一个实际示例的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1355481.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 19:14:35
下一篇 2025年12月13日 19:14:48

相关推荐

  • 周统计

    一周统计学速成:一场略带讽刺的深度探索 本周,我们将深入浅出地探讨统计学的核心概念,力求以严谨的技术手法解释基本原理,并辅以轻松的讽刺,让学习过程更轻松有趣。本文将详细分解我的统计学习之旅,涵盖理论知识、实际案例和 Python 代码实现。 1. 描述性统计:数据概述 描述性统计是将原始数据进行总结…

    2025年12月13日
    000
  • 使用 Elbow 方法进行 K 均值聚类

    概述 聚类分析是一种机器学习技术,用于将未标记的数据集划分成若干组(簇)。简单来说,它将相似的数据点分组到一起。具有相似特征的数据点归为一类,而与其他组差异较大的数据点则被划分到不同的组中。 以购物中心为例,我们可以看到商品按照用途分组:T恤衫在一个区域,裤子在另一个区域,蔬菜区则将苹果、香蕉、芒果…

    2025年12月13日
    000
  • 使用 Amazon Bedrock 构建个性化学习伴侣

    我现在正在攻读硕士学位,我一直想找到方法来减少每天的学习时间。瞧!这是我的解决方案:使用 amazon bedrock 创建一个学习伙伴。 我们将利用 amazon bedrock 来利用 gpt-4 或 t5 等基础模型 (fm) 的力量。 这些模型将帮助我们创建一个生成式人工智能,可以回答用户对…

    好文分享 2025年12月13日
    000
  • PyTorch 中的 CocoCaptions (2)

    请我喝杯咖啡☕ *备忘录: 我的帖子解释了cococaptions()使用带有captions_train2014.json、instances_train2014.json和person_keypoints_train2014.json的train2014、带有captions_val2014.j…

    2025年12月13日 好文分享
    000
  • 上传文件到 OpenAI:传递接力棒

    本文将指导您如何利用 OpenAI 文件 API 上传预处理好的 JSONL 文件,为后续模型微调做好准备,这就好比将整理好的邮件交给邮递员进行投递。 准备工作: 确保已安装 OpenAI Python 包:pip install openai获取您的 OpenAI API 密钥。 上传文件步骤 (…

    2025年12月13日
    000
  • PyTorch 中的 CocoDetection(2)

    请我喝杯咖啡☕ *我的帖子解释了 ms coco。 cocodetection() 可以使用 ms coco 数据集,如下所示。 *这适用于带有captions_train2017.json、instances_train2017.json和person_keypoints_train2017.js…

    2025年12月13日 好文分享
    000
  • PyTorch 中的 CocoDetection (1)

    请我喝杯咖啡☕ *备忘录: 我的帖子解释了cocodetection()使用train2017与captions_train2017.json,instances_train2017.json和person_keypoints_train2017.json,val2017与captions_val2…

    2025年12月13日 好文分享
    000
  • 学习数据科学的最佳方式:有抱负的专家综合指南

    数据科学领域日新月异,需要具备统计学、编程和专业领域知识的独特技能组合。如果您渴望进入这个充满活力的领域,掌握高效的学习方法将帮助您节省时间并最大化学习成果。本文将为您提供一个系统、全面的数据科学学习路线图。 1. 夯实基础 在深入高级主题之前,扎实的基础至关重要,包括: 数学:线性代数、微积分和概…

    2025年12月13日
    000
  • Hal创建并共享生成应用程序

    Hal9 (GitHub) 旨在简化基于LLM、扩散模型和其他AI模型的应用程序的创建、部署和共享。无论是构建聊天机器人、代理、API还是生成式应用,Hal9 都能最大限度地减少工程开销,让您专注于AI本身。 为什么选择Hal9? 许多生成式AI项目耗费大量时间在工程难题上——例如构建界面、集成工具…

    2025年12月13日
    000
  • 使用 Ngrok 将您的 Django 项目公开到 Internet

    Django 开发中遭遇 you’re accessing the development server over https, but it only supports http. 错误?本文为您提供解决方案:使用 ngrok。 什么是 ngrok? ngrok 是一款强大的工具,能轻松将本地应用…

    2025年12月13日
    000
  • 5 年内值得关注的令人兴奋的网络趋势

    未来五年,Web 开发将迎来激动人心的变革。以下十个关键趋势值得关注: WebGPU: WebGPU 将彻底改变浏览器图形和计算处理方式,提供对GPU的低级访问,从而实现高性能渲染、数据处理和机器学习应用。其灵活性远超WebGL,更接近Vulkan和DirectX 12等现代图形API。这将为浏览器…

    2025年12月13日
    000
  • 您的营销电子邮件最终会成为垃圾邮件吗?我们构建了一个工具来找出答案

    电子邮件营销的成功关键在于邮件送达收件箱而非垃圾邮件文件夹。本文将构建一个可验证邮件是否会被标记为垃圾邮件,并解释原因的工具。该工具将以api形式在线部署,方便集成到您的工作流程中。 垃圾邮件验证机制 Apache SpamAssassin是一个由Apache软件基金会维护的开源垃圾邮件检测平台,被…

    2025年12月13日
    000
  • Conquer Tedious Tasks with These Python Automation Scripts

    python自动化脚本:10个提升开发者效率的实用工具 重复性任务严重拖慢开发进度?别担心,Python强大的自动化功能能帮你解决这个问题!本文将介绍10个Python脚本,它们能显著提升开发者效率,让你更专注于创意编码。 告别离线:防止电脑休眠的脚本,让你的鼠标动起来,模拟用户活动,避免恼人的屏幕…

    2025年12月13日 好文分享
    000
  • 使用 Python 高效批量写入 DynamoDB:分步指南

    高效批量写入dynamodb的python指南 对于处理大量数据的应用程序而言,高效地将数据插入AWS DynamoDB至关重要。本指南将逐步演示一个Python脚本,实现以下功能: 检查DynamoDB表是否存在: 如果不存在则创建。生成随机测试数据: 用于模拟大规模数据插入。批量写入数据: 利用…

    2025年12月13日
    000
  • 使用图神经网络预测 NBA 球员的化学反应

    大家好,我是sea_turt1e。本文将分享我构建机器学习模型预测美国职业篮球联赛(NBA)球员化学反应的过程和结果。 模型概述 使用图神经网络(GNN)预测球员化学反应。以曲线下面积(AUC)作为评估指标。模型收敛时的AUC约为0.73。训练数据涵盖1996-97至2021-22赛季,2022-2…

    2025年12月13日 好文分享
    000
  • 用 Python 逐步解决每周挑战任务

    每周挑战赛 Python 解法:逐步求和 Mohammad S. Anwar 组织的每周挑战赛是一场友好的编程竞赛,参赛者需要解决两个任务。本篇文章将介绍我对每周挑战赛第 302 周,任务 2 “逐步求和” 的 Python 解法。 任务描述: 给定一个整数数组 @ints,编写一个脚本查找最小的正…

    2025年12月13日
    000
  • Python 中的交替异步生成器

    本文展示了一个 python 异步生成器 alternatinggenerator,它能够交替地从两个其他异步生成器中获取值。 该代码实现了异步迭代协议 (__aiter__ 和 __anext__),允许使用 async for 循环或手动调用 anext 来迭代结果。 alternatingge…

    2025年12月13日
    000
  • Python 入门:使用 Poetry 创建 Hello World 项目

    使用 Poetry 快速构建 Python Hello World 项目 Poetry 是一个功能强大的 Python 包管理和构建工具,它简化了项目创建、依赖管理和环境隔离等流程。本教程将引导您一步步使用 Poetry 创建一个简单的 “Hello, World!” Pyt…

    2025年12月13日
    000
  • 使用 Python 管理 Bitwarden Vault 中的重复项

    Bitwarden 缺乏内置的重复项管理功能。市面上现有的用户自制工具难以令人满意,因此,我开发了一款基于 Python 的工具来简化这一过程。 主要功能: 按条目类型筛选:登录信息、安全笔记、信用卡或身份信息。识别并导出重复项以供人工审核。将唯一条目保存到清理后的 JSON 文件中。提供交互式 S…

    2025年12月13日
    000
  • 如何在云端运行Python

    本文将指导您如何在Amazon Web Services (AWS) 上创建虚拟机并运行Python脚本。 步骤一:启动EC2实例 登录AWS控制台: 访问AWS管理控制台,选择EC2服务。 启动新的EC2实例: 点击“启动实例”,选择Amazon机器镜像(AMI),例如Ubuntu Server。…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信