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中正则表达式总结相关推荐

  1. python中变量的作用域有几种_Python中变量的作用域(variable scope)

    http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...

  2. python中选择结构通过什么语句实现_Python中选择结构通过什么语句实现

    Python中选择结构通过什么语句实现 Python中的选择结构语句是 if elif else. Python用缩进代替了Java/C/C++/C#中常用的大括号{}来区分代码块,另外Python在 ...

  3. python中比较运算符用于比较两个数_python中的运算和运算符

    运算和运算符 运算: 由一个以上的值经过变化得到新值得过程,就是运算. 运算符: 用于运算的符号,就是运算符 运算的分类: 1.算数运算 2.比较运算/关系运算 3.赋值运算 4.逻辑运算 5.位运算 ...

  4. python中元祖 字典 列表的区别_Python中元祖,列表,字典的区别

    原博文 2016-08-16 15:25 − Python中有3种內建的数据结构:列表.元祖和字典: 1.列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目. 列表中的 ...

  5. python中一切数据都是对象吗_python中的深拷贝(deepcopy)和浅拷贝(copy)

    前言 在很多语言中都存在深浅拷贝两种拷贝数据的方式,Python中也不例外.本文中详细介绍了Python中的深浅拷贝的相关知识,文章的内容包含: 对象.数据类型.引用 赋值 浅拷贝 深拷贝 一.Pyt ...

  6. python中的字典和类的区别_Python中的 字典和字典数据类型

    字典 1.字典是Python的内建数据类型,我们知道序列是以连续的整数为索引,而字典用关键字作为索引.特别的,关键字必须是不可变类型,常为字符串或者数值. #如果元组中只包含字符串和数字,它可以作为关 ...

  7. python代码风格程序越复杂越高级_Python中代码风格的改变和相应的性能优化

    使用现代风格改善你的代码 一旦你开始使用 Python 3,你就有机会接触新的特性来改善你的代码.这篇文章中提到的很多东西实际上在 Python 3 之前就已经被支持了.但我还是要提一下它们,因为知道 ...

  8. python list是不可变的数据类型吗_python中不可变数据类型和可变数据类型

    1.名词解释 以下所有的内容都是基于内存地址来说的. 不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型. 可变数据类型 : ...

  9. python中字典和集合的界定符_python中的字典 和 集合

    python中字典是一种key-value的数据类型 字典的特性: 1.无序的 2.key必须的唯一的,so,字典天生去重 语法: 增加 修改 删除 查找 多级字典嵌套及操作 字典的其他用法 #set ...

最新文章

  1. 【机器学习入门到精通系列】SVM与核函数(附程序模拟!)
  2. 【Android 启动过程】Android 应用启动流程 | Activity 启动流程
  3. 什么是oracle的临时表??
  4. 超级寒潮考验智慧城市万亿投资
  5. jq遍历子元素_leetcode第196周赛第三题统计全 1 子矩形
  6. 廖雪峰JavaScript学习笔记(基础及数据类型、变量)
  7. 征途pak文件修改_传奇技能,第十四祭:装备属性修改与增加新装备
  8. mysql系列之6--------使用第三方工具-percona来备份mysql和恢复
  9. php 怎么查看原生方法源码_你的2020搜索账单地址入口 你的2020搜索账单怎么查看查看方法...
  10. MAB多臂老虎机/赌博机
  11. 常见的java毕业设计_php毕业设计题目汇总
  12. 花之语第五期:紫罗兰
  13. fault tolerance中的错误和故障检测(Error and Fault Detection Mechanisms)
  14. 诗仙诗圣,你还知道诗什么
  15. ROWNUM和ROWID的认识
  16. David Cutler NT之父
  17. vite的public目录
  18. 看雪版主、十年黑客“玩命”:我不作死,我只玩命 | 宅客故事
  19. Visual Studio Community 2015:设置网站
  20. C++学习课件(二)————面向对象

热门文章

  1. 信息学奥赛一本通(1042:奇偶ASCII值判断)
  2. 数列分块入门 2(LibreOj-6278)
  3. Linux 简单文本处理命令
  4. 扩展二叉树(信息学奥赛一本通-T1340)
  5. 信息学奥赛C++语言:语文成绩
  6. 46 WM配置-作业-库存盘点-维护编码范围(盘点凭证和转储单TO)
  7. saiku连mysql 使用_saiku应用的调试
  8. 如何看当前windows是utf8还是gbk_职场中的OKR如何“好好说话”
  9. STM32那点事(4)_DMA(下)
  10. sicknss剖解整理