python中的正则表达式是干嘛的_python中正则表达式总结
re.match():从字符串的开始进行匹配
re.search():扫描整个字符串返回第一个匹配
re.findAll():返回所有匹配的字符串
Pattern 对象不能实例化,只能通过compile方法得到,匹配的模式有:
1).re.I(re.IGNORECASE): 忽略大小写
2).re.M(MULTILINE): 多行模式,改变'^'和'$'的行为
3).re.S(DOTALL): 点任意匹配模式,改变'.'的行为
4).re.L(LOCALE): 使预定字符类 \w \W \b \B \s \S 取决于当前区域设定
5).re.U(UNICODE): 使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
6).re.X(VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释
\s 匹配空白字符、比如空格、tab、换行等
\b 匹配一个长度为0的字符串,但是仅仅在一个单词开始或结尾处匹配,这称为词边界快捷方式
\B 匹配的是不在单词开始或结束位置长度为0的子字符串
\w 与任意单词匹配
\d 与任意数字匹配
^正则表达式开始
$表示结束
.任意字符,它只能出现在方括号字符组以外
?可选字符,?字符指定一个字符、字符组或其他基本单元可选,期望出现零次或者一次
{N}重复
{M,N}M~N次
正则表达式中的分组
>>> m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
>>> m
>>> m.group(0) #group(0)永远表示原始字符串
'010-12345'
>>> m.group(1)
'010'
>>> m.group(2)
'12345'
贪婪匹配:正则表达式中默认是贪婪匹配,
>>> re.match(r'^(\d+)(0*)$', '102300').groups()
('102300', '')
非贪婪匹配后面➕?即可
re.match(r'^(\d+?)(0*)$', '102300').groups()
('1023', '00')
正则表达式的编译
当我们在Python中使用正则表达式时,re模块内部会干两件事情:
编译正则表达式,如果正则表达式的字符串本身不合法,会报错;
用编译后的正则表达式去匹配字符串。
如果一个正则表达式要重复使用几千次,出于效率的考虑,我们可以预编译该正则表达式,接下来重复使用时就不需要编译这个步骤了,直接匹配
>>> import re
# 编译:
>>> re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')
# 使用:
>>> re_telephone.match('010-12345').groups()
('010', '12345')
>>> re_telephone.match('010-8086').groups()
('010', '8086')
编译后生成Regular Expression对象,由于该对象自己包含了正则表达式,所以调用对应的方法时不用给出正则字符串
python中的正则表达式是干嘛的_python中正则表达式总结相关推荐
- python中变量的作用域有几种_Python中变量的作用域(variable scope)
http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...
- python中选择结构通过什么语句实现_Python中选择结构通过什么语句实现
Python中选择结构通过什么语句实现 Python中的选择结构语句是 if elif else. Python用缩进代替了Java/C/C++/C#中常用的大括号{}来区分代码块,另外Python在 ...
- python中比较运算符用于比较两个数_python中的运算和运算符
运算和运算符 运算: 由一个以上的值经过变化得到新值得过程,就是运算. 运算符: 用于运算的符号,就是运算符 运算的分类: 1.算数运算 2.比较运算/关系运算 3.赋值运算 4.逻辑运算 5.位运算 ...
- python中元祖 字典 列表的区别_Python中元祖,列表,字典的区别
原博文 2016-08-16 15:25 − Python中有3种內建的数据结构:列表.元祖和字典: 1.列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目. 列表中的 ...
- python中一切数据都是对象吗_python中的深拷贝(deepcopy)和浅拷贝(copy)
前言 在很多语言中都存在深浅拷贝两种拷贝数据的方式,Python中也不例外.本文中详细介绍了Python中的深浅拷贝的相关知识,文章的内容包含: 对象.数据类型.引用 赋值 浅拷贝 深拷贝 一.Pyt ...
- python中的字典和类的区别_Python中的 字典和字典数据类型
字典 1.字典是Python的内建数据类型,我们知道序列是以连续的整数为索引,而字典用关键字作为索引.特别的,关键字必须是不可变类型,常为字符串或者数值. #如果元组中只包含字符串和数字,它可以作为关 ...
- python代码风格程序越复杂越高级_Python中代码风格的改变和相应的性能优化
使用现代风格改善你的代码 一旦你开始使用 Python 3,你就有机会接触新的特性来改善你的代码.这篇文章中提到的很多东西实际上在 Python 3 之前就已经被支持了.但我还是要提一下它们,因为知道 ...
- python list是不可变的数据类型吗_python中不可变数据类型和可变数据类型
1.名词解释 以下所有的内容都是基于内存地址来说的. 不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型. 可变数据类型 : ...
- python中字典和集合的界定符_python中的字典 和 集合
python中字典是一种key-value的数据类型 字典的特性: 1.无序的 2.key必须的唯一的,so,字典天生去重 语法: 增加 修改 删除 查找 多级字典嵌套及操作 字典的其他用法 #set ...
最新文章
- 【机器学习入门到精通系列】SVM与核函数(附程序模拟!)
- 【Android 启动过程】Android 应用启动流程 | Activity 启动流程
- 什么是oracle的临时表??
- 超级寒潮考验智慧城市万亿投资
- jq遍历子元素_leetcode第196周赛第三题统计全 1 子矩形
- 廖雪峰JavaScript学习笔记(基础及数据类型、变量)
- 征途pak文件修改_传奇技能,第十四祭:装备属性修改与增加新装备
- mysql系列之6--------使用第三方工具-percona来备份mysql和恢复
- php 怎么查看原生方法源码_你的2020搜索账单地址入口 你的2020搜索账单怎么查看查看方法...
- MAB多臂老虎机/赌博机
- 常见的java毕业设计_php毕业设计题目汇总
- 花之语第五期:紫罗兰
- fault tolerance中的错误和故障检测(Error and Fault Detection Mechanisms)
- 诗仙诗圣,你还知道诗什么
- ROWNUM和ROWID的认识
- David Cutler NT之父
- vite的public目录
- 看雪版主、十年黑客“玩命”:我不作死,我只玩命 | 宅客故事
- Visual Studio Community 2015:设置网站
- C++学习课件(二)————面向对象
热门文章
- 信息学奥赛一本通(1042:奇偶ASCII值判断)
- 数列分块入门 2(LibreOj-6278)
- Linux 简单文本处理命令
- 扩展二叉树(信息学奥赛一本通-T1340)
- 信息学奥赛C++语言:语文成绩
- 46 WM配置-作业-库存盘点-维护编码范围(盘点凭证和转储单TO)
- saiku连mysql 使用_saiku应用的调试
- 如何看当前windows是utf8还是gbk_职场中的OKR如何“好好说话”
- STM32那点事(4)_DMA(下)
- sicknss剖解整理