【Python】编程笔记10
文章目录
- 正则表达式
- 一、基本使用
- 二、进阶——更精确
- 三、re模块
- 1、match()方法
- 2、split()——切分字符串
- 3、()——分组
- 4、贪婪匹配
- 5、编译
正则表达式
- 用于匹配字符串。
- 思想 :用一种描述性的语言来给字符串定义一个规则,凡事符合规则的字符串,则认为“匹配”,否则,不合法。
一、基本使用
符号 | 含义 |
---|---|
\s | 匹配一个空格、空白符 |
\d | 匹配一个数字 |
\w | 匹配一个字母或数字 |
. | 匹配任意字符 |
* | 匹配任意个字符(包括0个) |
+ | 至少一个字符 |
? | 表示0个或1个字符 |
{n} | 表示n个字符 |
{n, m} | 表示n~m个字符 |
注意:可以使用多者的组合形式。
eg:\d{3}\s+\d{3,8}
- \d{3}表示匹配 3 个数字,例如’010’;
- \s 可以匹配一个空格(也包括 Tab 等空白符),所以\s+表示至少有一个空格,例如匹配’ ', ’ '等;
- \d{3,8}表示 3-8 个数字,例如’1234567’。
二、进阶——更精确
[] 表示范围,eg:
- [0-9a-zA-Z_] 可以匹配一个数字、字母或者下划线;
- [0-9a-zA-Z_]+可以匹配至少由一个数字、字母或者下划线组成的字符串;
- [a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串;==》合法的变量
A|B 匹配 A 或 B
^ 表示行的开头,^\d 表示必须以数字开头
$ 表示行的结束,\d$ 表示必须以数字结束
三、re模块
包含所有正则表达式的功能,需特别注意 \ 转义 或 使用r前缀(可以不考虑转义的问题,推荐)
1、match()方法
match()方法 判断是否匹配,如果匹配成功,返回一个 Match 对象,否则返回 None。
import re
print(re.match(r'^\d{3}\-\d{3,8}$', '010-12345'))
print(re.match(r'^\d{3}\-\d{3,8}$', '010 12345'))
结果输出
<_sre.SRE_Match object; span=(0, 9), match='010-12345'>
None
常用判断方法
test = '用户输入的字符串'
if re.match(r'正则表达式', test):print('ok')
else:print('failed')
2、split()——切分字符串
利用正则表达式将不规范的输入转化为正确的数组
print(re.split(r'\s+','a b c'))
print(re.split(r'[\s\,]+', 'a,b, c d'))
print(re.split(r'[\s\,\;]+', 'a,b;; c d'))
输出结果
['a', 'b', 'c']
['a', 'b', 'c', 'd']
['a', 'b', 'c', 'd']
3、()——分组
用于提取子串,用 () 表示要提取的分组。
m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
print(m)
print(m.group(0)) # 第一个匹配的子串,永远是原始字符串
print(m.group(1)) # 第二个匹配的子串
print(m.group(2)) # 第三个匹配的子串t = '19:05:30'
m = re.match(r'(0[0-9]|1[0-9]|2[0-3])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t)
print(m.groups())
结果输出
<_sre.SRE_Match object; span=(0, 9), match='010-12345'>
010-12345
010
12345
('19', '05', '30')
4、贪婪匹配
正则匹配默认是贪婪匹配,即匹配尽可能多的字符。
## 贪婪匹配
print(re.match(r'^(\d+)(0*)$', '102300').groups())
## 非贪婪匹配——添加?
print(re.match(r'^(\d+?)(0*)$', '102300').groups())
结果输出
('102300', '')
('1023', '00')
5、编译
当使用正则表达式时,re模块内部会做两个事:
- 编译正则表达式,若其本身不合法,则报错;
- 用编译后的正则表达式来匹配字符串。
预编译正则表达式(若该正则表达要重复使用几千次):
编译后生成Regular Expression 对象,可以调用对应的方法实现字符串匹配。
# 编译正则表达式
re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')
# 使用
print(re_telephone.match('010-123456').groups())
print(re_telephone.match('010-8086').groups())
结果输出
('010', '123456')
('010', '8086')
【Python】编程笔记10相关推荐
- Python 常用线型 + 点符号 + 颜色汇总 ∈ Python 编程笔记
文章目录 Part.I 线型 Chap.I 基本线型 Chap.II 元组线型 Part.II 点符号 Chap.I 基本符号 Chap.II 高级符号 Part.III 颜色 Chap.I 单词或字 ...
- python两数相加代码_一边学编程,一边学语数外,用python编程全排列10以内两数加法...
原标题:一边学编程,一边学语数外,用python编程全排列10以内两数加法 编程并不神秘 编程只是解决问题的一共方法 python是一门编程语言 python是一种解决问题的编程工具 在小学阶段,学习 ...
- Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)
Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...
- Python自学笔记10:实操案例七(根据星座测试性格特点、模拟12306火车订票下单)
Python自学笔记10:实操案例七(根据星座测试性格特点.模拟12306火车订票下单) 网课传送门:https://www.bilibili.com/video/BV1Sw411Z779?p=157 ...
- Python编程笔记6字典
Python编程学习笔记,第6记:数据结构之字典 本节将学习:能够将相关信息关联起来的Python字典.如何定义字典.如何使用存储在字典中的信息.如何访问和修改字典中的元素.如何遍 ...
- Python编程笔记
Table of Contents 1. 绪论 2. python编程概述 2.1. 知识点 2.2. 良好的编程习惯 2.3. 常见编程错误 2.4. 测试和调试提示 2.5. 移植性提示 3. 控 ...
- Python 编程笔记(本人出品,必属精品)
文章目录 Part.I 准备工作 Chap.I 下载安装 Chap.II 实现快捷键清屏 Chap.III 概念汇编 & 注意事项 Part.II 基础知识 Chap.I 快应用 Chap.I ...
- Python编程的10个经典错误及解决办法
接触了很多Python爱好者,有初学者,亦有转行人.不论大家学习Python的目的是什么,总之,学习Python前期写出来的代码不报错就是极好的.下面,严小样儿为大家罗列出Python3十大经典错误及 ...
- 《Python学习笔记》——南溪的python编程笔记
1 致谢 感谢张轩老师分享的关于函数式编程的博文! 1 前言 Python中使用函数式编程也是很重要的: 2 函数 (对于函数编写的原则,我们参考了网易云音乐大前端团队的博文网易云音乐大前端团队--& ...
最新文章
- blog搬家通知---------------------------------------
- 数据库基础操作(二)数据库表数据的增删查改
- [MySQL] 查询一段时间记录
- Win10怎么设置虚拟内存?
- Vim中数字自增、自减
- ECS 按量付费VPC实例停机不收费FAQ
- 机器学习基石HOW BETTER部分(1)
- 监狱干警定位管理系统
- T9社区注册流程记录(笔记)
- Typora下载链接
- Houdini11:材质
- Nmap端口扫描windows版
- 语音信号处理基础知识之频谱、相位谱、幅度谱、功率谱及语谱图
- java wmic_wmic
- ffmpeg gl-transitions 图片合成视频 转场特效
- Spring data elasticsearch添加同义词组件实现同义词热更新
- 【Shior学习】subject和session
- c语言编辑三色球问题,C语言实例编程:三色球问题
- 测试微信号连接的开发的步骤
- 利用python进行平行束FBP重建结果
热门文章
- 在开发中遇到过内存溢出么?原因有哪些?解决方法有哪些?
- Nginx详细安装部署教程
- php商品分类显示商品,ecshop首页显示全部商品分类的方法
- 蜘蛛纸牌java注释_自己摸索的纸牌游戏代码,感觉还有很多知识不懂,任重道远啊!...
- 用python倒序输出一个字符串_Python 反转字符串(reverse)的方法小结
- oracle虚拟机 centos6.5,虚拟机oracle virtualbox 上安装centos6.5 网络设置
- mysql genlog 分析_Mysq性能分析 —— Genral log(普通日志)与 Slow log(慢速日式)...
- python计算一元一次方程的根_5-2 一元二次方程
- 苹果数据线不能充电_外媒痛批苹果!iPhone 12不送充电器绝非为环保,理由太真实!|充电器|数据线|手机|iphone...
- apache 部署python3_flask+apache2+wsgi+python3 部署(挖坑记)