利用Python正则表达式匹配email地址
正则表达式给予了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地址相关推荐
- 《python3廖雪峰》正则表达式匹配Email地址练习题答案
<python3廖雪峰>正则表达式章节最后留了这个题目,对于初学者还是要折腾一下才能做出来的,我作为初学者,花了1个小时研究出来了,当然只是针对题目中的3种Email地址的正则匹配,如果想 ...
- python正则匹配ip地址_IP地址正则表达式匹配方法,ip正则表达式匹配
IP地址正则表达式匹配方法,ip正则表达式匹配 正则表达式(Regular Expression,在代码中常简写为regex.regexp或RE)是计算机科学的一个概念.正则表达式使用单个字符串来描述 ...
- python正则匹配ip地址_Python正则表达式匹配ip地址实例
Python正则表达式匹配ip地址实例 更新时间:2014年10月09日 11:22:51 投稿:shichen2014 这篇文章主要介绍了Python正则表达式匹配ip地址实例,通过简单的实例讲述了 ...
- python正则匹配ip地址_Python正则表达式匹配和提取IP地址
Linux No.1 IPv4 下面是IPv4的IP正则匹配实例: 简单的匹配给定的字符串是否是ip地址 import re if re.match(r"^(?:[0-9]{1,3}.){3 ...
- python re正则提取ip地址_python 正则表达式匹配IP地址
一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.实验目的 从tex ...
- python过滤敏感词汇_利用Python正则表达式过滤敏感词的方法
利用Python正则表达式过滤敏感词的方法 问题描述:很多网站会对用户发帖内容进行一定的检查,并自动把敏感词修改为特定的字符. 技术要点: 1)Python正则表达式模块re的sub()函数: 2)在 ...
- java邮箱地址正则表达式_Java 正则表达式匹配邮箱地址
作者 : 卿笃军 正则表达式中的部分元字符: 元字符 正则表达式中的写法 意义 . . 代表任意一个字符 \d \\d 代表0~9的任何一个数字 \D \\D 代表任何一个非数字字符 \s \\s 代 ...
- Python正则表达式匹配各种标准形式整理
正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 正则表达式链接网址 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个 ...
- python正则表达式匹配字符串中的电话号码_Python正则表达式匹配字符串中的数字...
这篇文章主要介绍了Python正则表达式匹配字符串中的数字,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 1.使用"\d+"匹配全数字 代码: ...
最新文章
- Segment Routing — SRv6 — TE 流量工程
- kcf跟踪算法实例整理
- 海量数据的实时指标计算
- 国内厂商对鸿蒙系统的态度,鸿蒙系统4月上线,国内手机厂商态度很关键!小米、中兴出乎意料...
- pthread_create()创建线程最大个数
- 一文读懂 HMM 模型和 Viterbi 算法
- 【牛客 - 283C】模拟只会猜题意(简单模拟)
- 【noip2016】d2解题报告
- 写给自己看的三栏布局的演示
- Final Cut Pro X中如何使音视频片段能够自由拖动
- 【设计模式笔记】代理模式
- 【C++】C++为什么要引入引用这个复合类型?
- HDU 4050 wolf5x 概率dp 难度:1
- 模式识别与机器学习 第一章 绪论
- 配置DTcms伪静态功能图文教程
- 【Echarts】三维地图叠加柱状图
- 大道至简——软件工程实践者的思想知识导图
- 迷你计算机可玩游戏,迷你电脑小主机打游戏可还行?
- hmc如何进入aix系统_hmc操作手册.doc
- Macbook 安装Android Studio以及解决卡顿问题