正则表达式_月隐学python第20课
目录
1.为什么使⽤正则表达式
2.正则表达式的组成
3.正则常⽤⽅法
3.1 re.match()
3.2 re.search()
3.3 re.findall()
3.4 re.split
3.5 re.sub和re.subn
3.6 re.group()和re.groups()
3.7 compile
4.练习
正则表达式
正则表达式是对字符串操作的⼀种逻辑公式,就是⽤事先定义好的⼀些特定字符、及这些特定字符的组合,组成⼀个“规则字符串”,这个“规则字符串”⽤来表达对字符串的⼀种过滤逻辑。
- 需要引⼊内置模块re
- 缺点:效率低下,能⽤字符串⽅法完成尽量使⽤字符串的⽅法
- 优点:编码简单
1.为什么使⽤正则表达式
使⽤场景
- 敏感词过滤
- ⼿机、邮箱等验证
- 爬⾍
2.正则表达式的组成
- 原⼦ 组成正则表达式的最⼩单位,任何字符都可以
- 量词 量词能够增强原⼦的描述能⼒
- 模式修正符
注意:
- 模式字符串⼀定要使⽤原⽣字符串,也就是⽤r开头的字符串。 r'www'
- 严格区分⼤⼩写
- 如果正则表达式中有{, }, [,],-,?,*,|^,$,.等做普通字符,则要将其转义
3.正则常⽤⽅法
3.1 re.match()
3.2 re.search()
3.3 re.findall()
3.4 re.split
3.5 re.sub和re.subn
3.6 re.group()和re.groups()
⽤于提取⼦元素,模式中⼀个括号就是⼀个⼦元素, group和groups只能在match和search⽅法⾥使⽤,通过返回的match object获取⼦元素。在模式串和sub和subn中的替换字符串中可以使⽤\1, \2, \3....来引⽤⼦元素
3.7 compile
当我们使⽤正则表达式时, re模块会⼲两件事
1、编译正则表达式,如果正则表达式本身不合法,会报错
2、⽤编译后的正则表达式去匹配对象
编译正则表达式使⽤compile
4.练习
⽤户名匹配:由数字、⼤⼩写字⺟、下划线 _ 和中横线 - 组成,⻓度为4到14位,并且不能以数字开头。
把下划线命名(也叫蛇形命名,所有单词都是⼩写,中间通过下划线连接),转化为⼩驼峰命名法(第⼀个单词⼩写,其余所有单词⾸字⺟⼤写)。例如'go_to_next_page',转化后改写为'goToNextPage'。要求:⽤正则表达式替换
匹配邮箱
匹配⼿机号
匹配身份证号。
匹配URL地址
匹配⽇期
匹配QQ号
匹配微信号
匹配⻋牌号
def user_name():while 1:name = input("请输入用户名:")if len(name) > 3 and len(name) <15 :re_name = re.compile(r'^[^\d]([0-9a-zA-Z])|(_-)')if re_name.match(name) != None:print("用户名输入成功:")return nameelse:print("用户名格式输入错误")print("用户名:由数字、⼤⼩写字⺟、下划线 _ 和中横线 - 组成,⻓度为4到14位,并且不能以数字开头。")else:print("用户名格式输入错误")print("用户名:由数字、⼤⼩写字⺟、下划线 _ 和中横线 - 组成,⻓度为4到14位,并且不能以数字开头。")user_name()
# 小驼峰替换
def replace(obj):obj = obj.group(0)res = [value.upper() for value in obj if obj.islower()]res = ''.join(res)# res = ''# for i in range(len(obj)):# if obj[i].islower():# res += obj[i].upper()# else:# res += obj[i]print(res)return res
str1 = input('请输入字符串:')
res = re.sub('_\w',replace,str1)
res = re.sub('_','',res)
print(res)
# 匹配手机号
def phone():phone_num = input("请输入手机号:")ret = re.match(r'^1(([3578]\d)|(47))\d{8}$',phone_num)if ret != None:print('是手机号')else:print('不是手机号')
phone()
# 匹配邮箱
def emil():emil_name = input('请输入邮箱:')# ret =re.match(r'\w{1,10}((@qq.com)|(@126.com)|(@163.com))$',emil_name)ret =re.match(r'[0-9a-zA-Z]{1,10}((@qq.com)|(@126.com)|(@163.com))$',emil_name,re.I)print(ret)if ret != None:print('邮箱正确')else:print('邮箱格式不对')
emil()
正则表达式_月隐学python第20课相关推荐
- python编程基础_月隐学python第2课
python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...
- 函数进阶_月隐学python第11课
目录 1.函数类型 2. 匿名函数 3.传入函数(理解) 4.闭包 5.偏函数 6.变量的作用域 6.1 变量作用域的分类 6.2 变量作⽤域查找规则 6.3 全局变量和局部变量 6.4 global ...
- 字符串_月隐学python第7课
一.字符串 字符串就是由若干个不同的unicode字符组成的不可变序列 1 .字符串创建 2.获取字符 因为是不可变序列,所以不能修改单个字符: 凡是修改字符串的操作都产生新串 3.字符串转义 常⻅转 ...
- 列表_月隐学python第6课
在python中,有这样一些类型,它们的成员是有序排列的,并且可以通过下标访问成员,这些类型称之为有序序列,包括:列表.元组和字符串:其中列表的成员可修改,属于可变序列,字符串和元组,成员不可修改,属 ...
- 数据类型和运算符_月隐学python第3课
1.类型判断 我们可以使⽤用type来返回数据类型和⽤用isinstance判断数据类型 2. 运算符和表达式 在数学上为了了计算结果,我们会写⼀一些式⼦子计算,例例如: 30 + 5 这是数学中的算 ...
- mysql基础_月隐学python第22课
目录 ⼀.数据库基本概念 常⻅的数据库: MySQL简介 mysql的安装 linux下 windows下安装 ⼆. SQL 三.操作数据库 四.数据库表 例子: 五.数据类型 数值型 字符型 ⽇期 ...
- 字典与集合_月隐学python第8课
一.字典 字典属于无序列,元素存放无序,是通过哈希方式进行数据存取的,字典是一个可变容器,字典中保存一个的键值对: key : value.我们通过key来获取对应的值,很类似我们的汉语字典. 字典中 ...
- mysql高级之子查询,多表查询,外连接,集合操作,内部函数与数据控制_月隐学python第24课
目录 ⼀.⾼级 1.1 ⼦查询 1.2 多表查询 1.3 外连接 1.4 集合操作 1.5 内部函数 ⼆.数据控制 2.1 事务 2.2 授权管理 ⼀.⾼级 1.1 ⼦查询 ⼦查询嵌⼊到其他查询语句中 ...
- mysql练习_创建库与列表、增加列表信息、列表查询(包含多列表查询)_月隐学python第23课
目录 一 .题目与设计 二 .运行结果 一 .题目与设计 SHOW DATABASES; drop DATABASE student;-- **********创建库**************** ...
最新文章
- 关于cocos2d的下载和安装
- 零基础自学python的app-零基础初学Python,需要装什么软件?
- 转载--tomcat整合apr
- 读取points文件
- Java 文件字符输入流FileReader读取txt文件乱码问题
- 【机器视觉】 convert_vector_to_tuple算子
- 【Android】Apk安装和删除
- python的计算_python 计算方位角实例(根据两点的坐标计算)
- linux借助expect完成自动登录
- 1-算法leetcode 876 快慢指针
- k近邻算法matlab实现_k近邻算法
- centos6.8下安装dc2012
- Windows Phone 7(WP7)开发 获取网络状态
- Java8新特性Stream流、Stream多字段排序
- 服务器 cpu系列 至强系列那个好,至强系列 intel至强和酷睿I系列,到底哪个好
- (附源码)spring boot校园购物网站 毕业设计041037
- 鸿蒙EMUI10升级体验,华为P30升级EMUI10,体验如何?我给大家说一说!
- 长波红外线灯的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 07.图6 旅游规划 [Dijkstra 算法]
- 2022“杭电杯”中国大学生算法设计超级联赛(8)
热门文章
- 阮一峰react demo代码研究的学习笔记 - demo10 debug
- CRM order lock will trigger product read API
- some example of SAP odata annotation in metadata
- 只要200行JavaScript代码,就能把特斯拉汽车带到您身边
- SAP CRM代码对数据库表COMM_PRODUCT的读写访问情况明细统计
- WordPress Restful API registration to Kyma WordPress API注册到Kyma的实现原理
- equipment download和CRM 的change history
- One order datatype 命名规范
- 如何自动打开function对应的ABAP class
- SAP CRM BSP repository 如何判断switch的状态