正则表达式给予了Python在字符串匹配的过程中极大的方便。
正则顾名思义就是制定一个规则,至于是谁来遵守,Python中无疑是字符串。当我们在制定完一个字符串的表达形式后,所有符合此规则的字符串都可以依据此规则进行匹配,不需要再通过复杂的代码对字符串进行拆分判断。
此次可以来看下Python匹配常见email地址,比如: burn_ashes@123.com , 65633ttmn@gmail.com , zheng.agv@csdn.com.cn 等。
对于这样的常见email格式,不同的公司可能命名规则不一样。但是在实际使用时怎么判断这些email是否合法。 可能你在注册某个网站时还需要你填写自己的用户名,如果填写不规范,后台往往会提醒昵称不合法,并且会在一侧提示合法的表达形式是什么。
那么做到这是很复杂吗? 告诉你,不复杂。正则表达式就可以解决这个问题。
首先,Python中是有一套字符表示方法的。
用’\d’可以匹配一个数字,’\w’可以匹配一个字母或数字,’.’可以匹配任意一个字符,\s可以匹配一个空格;
[ ]可以用来表示一定的范围匹配方式。其中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符。
举例看下:
‘\w\d’ :表示可以匹配全数字或者字符加数字,如’03’,’a4’,’A4’等,但是无法匹配’aa’;
‘Bu.’ :可以匹配Bu后面跟任意字符;
[\w]+ :表示至少一个字符或数字;
\w{2,3} :表示2个或者3个字符或者数字。

进入正题,来看如何实现对上述常见email格式进行正则。
email表达式开头可以是数字或者字符,可以想到用\w来表示,email地址也是可以容忍’.’的,但是限定最多只能出现一个,且不能在地址首尾出现。也就是说地址的最后一位必须是字母或者数字,所以在’.’后可以再次用\w来表示。接下来就是email地址中的@符号,这个符号是必须且不可更改的,需要用转义字符’\’来表示,\@。剩余的就是常见的.com ,.com.cn ,.it 等 同样’.’也需要用转义字符来表示,在转义字符后可以用\w{2,3}来匹配常见的格式,剩余的可有可无的.cn .it 等类似形式的怎么处理呢,需要用到(A|B])这样的形式来匹配,表示A或者B,可以用(\w{2}|)表示。组合起来就可以得到最终的正则表达式了。
附代码和验证:

import re
def is_valid_email(addr):if re.match(r'^([\w]+\.*)([\w]+)\@[\w]+\.\w{3}(\.\w{2}|)$', addr):return True
assert is_valid_email('nobodyin@gmail.com.cn')
assert is_valid_email('bill.maria@yahoo.com')
assert not is_valid_email('uncle.sam@mifty.com..org')
assert is_valid_email('united.china@163.com.it')
assert not is_valid_email('doggy#sample.com')
assert not is_valid_email('y_cat-st@example.com')
print('ok')

利用Python正则表达式匹配email地址相关推荐

  1. 《python3廖雪峰》正则表达式匹配Email地址练习题答案

    <python3廖雪峰>正则表达式章节最后留了这个题目,对于初学者还是要折腾一下才能做出来的,我作为初学者,花了1个小时研究出来了,当然只是针对题目中的3种Email地址的正则匹配,如果想 ...

  2. python正则匹配ip地址_IP地址正则表达式匹配方法,ip正则表达式匹配

    IP地址正则表达式匹配方法,ip正则表达式匹配 正则表达式(Regular Expression,在代码中常简写为regex.regexp或RE)是计算机科学的一个概念.正则表达式使用单个字符串来描述 ...

  3. python正则匹配ip地址_Python正则表达式匹配ip地址实例

    Python正则表达式匹配ip地址实例 更新时间:2014年10月09日 11:22:51 投稿:shichen2014 这篇文章主要介绍了Python正则表达式匹配ip地址实例,通过简单的实例讲述了 ...

  4. python正则匹配ip地址_Python正则表达式匹配和提取IP地址

    Linux No.1 IPv4 下面是IPv4的IP正则匹配实例: 简单的匹配给定的字符串是否是ip地址 import re if re.match(r"^(?:[0-9]{1,3}.){3 ...

  5. python re正则提取ip地址_python 正则表达式匹配IP地址

    一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.实验目的 从tex ...

  6. python过滤敏感词汇_利用Python正则表达式过滤敏感词的方法

    利用Python正则表达式过滤敏感词的方法 问题描述:很多网站会对用户发帖内容进行一定的检查,并自动把敏感词修改为特定的字符. 技术要点: 1)Python正则表达式模块re的sub()函数: 2)在 ...

  7. java邮箱地址正则表达式_Java 正则表达式匹配邮箱地址

    作者 : 卿笃军 正则表达式中的部分元字符: 元字符 正则表达式中的写法 意义 . . 代表任意一个字符 \d \\d 代表0~9的任何一个数字 \D \\D 代表任何一个非数字字符 \s \\s 代 ...

  8. Python正则表达式匹配各种标准形式整理

    正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 正则表达式链接网址 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个 ...

  9. python正则表达式匹配字符串中的电话号码_Python正则表达式匹配字符串中的数字...

    这篇文章主要介绍了Python正则表达式匹配字符串中的数字,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 1.使用"\d+"匹配全数字 代码: ...

最新文章

  1. Segment Routing — SRv6 — TE 流量工程
  2. kcf跟踪算法实例整理
  3. 海量数据的实时指标计算
  4. 国内厂商对鸿蒙系统的态度,鸿蒙系统4月上线,国内手机厂商态度很关键!小米、中兴出乎意料...
  5. pthread_create()创建线程最大个数
  6. 一文读懂 HMM 模型和 Viterbi 算法
  7. 【牛客 - 283C】模拟只会猜题意(简单模拟)
  8. 【noip2016】d2解题报告
  9. 写给自己看的三栏布局的演示
  10. Final Cut Pro X中如何使音视频片段能够自由拖动
  11. 【设计模式笔记】代理模式
  12. 【C++】C++为什么要引入引用这个复合类型?
  13. HDU 4050 wolf5x 概率dp 难度:1
  14. 模式识别与机器学习 第一章 绪论
  15. 配置DTcms伪静态功能图文教程
  16. 【Echarts】三维地图叠加柱状图
  17. 大道至简——软件工程实践者的思想知识导图
  18. 迷你计算机可玩游戏,迷你电脑小主机打游戏可还行?
  19. hmc如何进入aix系统_hmc操作手册.doc
  20. Macbook 安装Android Studio以及解决卡顿问题

热门文章

  1. mysql解决aba问题_AtomicStampedReference解决CAS的ABA问题
  2. 医药行业数字化转型加速,上云势在必行!
  3. 福建省大学生一级计算机考试,福建省高校学生计算机等级考试一级考纲
  4. Cartographer安装教程及踩坑实录
  5. augustus预测藻类全基因组序列
  6. 图像梯度(Image gradient)
  7. 计算机控制技术在农业的应用,电力电子技术在农业电气化中的应用
  8. 3D打印的“鸟巢”鞋 不知道值不值得拥有
  9. 爱数备份--新建备份计划
  10. 聚合支付:全新的第四方支付平台