正则表达式

1.点-匹配所有字符

. 表示要匹配除了 换行符 之外的任何 单个 字符。

content = """苹果是绿色的
橙子是橙色的
香蕉是黄色的
乌鸦是黑色的"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
p = re.compile(".色")
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)

2.星号-重复匹配任意次

* 表示匹配前面的子表达式任意次,包括0次。

content = """苹果,是绿色的
橙子,是橙色的
香蕉,是黄色的
乌鸦,是黑色的
猴子,"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
p = re.compile(",.*")
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)

3.加号-重复匹配多次

+ 表示匹配前面的子表达式一次或多次,不包括0次。

content = """苹果,是绿色的
橙子,是橙色的
香蕉,是黄色的
乌鸦,是黑色的
猴子,"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
p = re.compile(",.+")
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)

4.问号-匹配0-1次

? 表示匹配前面的子表达式0次或1次

content = """苹果,绿色的
橙子,橙色的
香蕉,黄色的
乌鸦,黑色的
猴子,,"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
p = re.compile(",.?")
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)

5.花括号-匹配指定次数

花括号表示 前面的字符匹配 指定的次数

content = """红彤彤,绿油油,黑乎乎乎乎,绿油油油油"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
p = re.compile("油{2,4}")
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)

6.贪婪模式和非贪婪模式

我们要把下面的字符串中的所有html标签都提取出来,

source = '<html><head><title>Title</title>'

得到这样的一个列表

['<html>', '<head>', '<title>', '</title>']

<.>这样写是不对的,因为在python中 . 都是贪婪的,会尽可能多的向后匹配,

为了解决这问题就要使用非贪婪模式 ,只需要加?即可

content = """<html><head><title>Title</title>"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
p = re.compile("<.*?>")
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)

对元字符的转义

反斜杠 \ 在正则表达式中有多种用途。

所谓元字符的转义,就是让元字符失去原来的含义

content = """苹果.是绿色的
橙子.是橙色的
香蕉.是黄色的"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
p = re.compile(".*\.")
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)

\d 匹配0-9之间任意一个数字字符,等价于表达式 [0-9]

\D 匹配任意一个不是0-9之间的数字字符,等价于表达式 [^0-9]

\s 匹配任意一个空白字符,包括 空格、tab、换行符等,等价于表达式 [\t\n\r\f\v]

\S 匹配任意一个非空白字符,等价于表达式 [^ \t\n\r\f\v]

\w 匹配任意一个文字字符,包括大小写字母、数字、下划线,等价于表达式 [a-zA-Z0-9_]

缺省情况也包括 Unicode文字字符,如果指定 ASCII 码标记,则只包括ASCII字母

\W 匹配任意一个非文字字符,等价于表达式 [^a-zA-Z0-9_]

方括号-匹配几个字符之一

方括号表示要匹配 指定的几个字符之一 。

content = """sadfsafastrhtgyfujh"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
p = re.compile("[sa]")
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)

起始、结尾位置 和 单行、多行模式

^ 表示匹配文本的 开头 位置。

正则表达式可以设定 单行模式多行模式

如果是 单行模式 ,表示匹配 整个文本 的开头位置。

如果是 多行模式 ,表示匹配 文本每行 的开头位置。

python中默认是单行模式

content = """001-苹果价格-60,
002-橙子价格-70,
003-香蕉价格-80,"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
# 默认是单行模式,如果要找每一行开头的内容,则需要开启多行模式re.MULTILINE或者re.M
p = re.compile("^\d+-", re.MULTILINE)
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)

$ 表示匹配文本的 结尾 位置。

如果是 单行模式 ,表示匹配 整个文本 的结尾位置。

如果是 多行模式 ,表示匹配 文本每行 的结尾位置。

content = """001-苹果价格-60
002-橙子价格-70
003-香蕉价格-80"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
# 默认是单行模式,如果要找每一行开头的内容,则需要开启多行模式re.MULTILINE或者re.M
p = re.compile("-\d*$", re.MULTILINE)
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)

竖线-匹配两者之一

竖线表示 匹配 前者 或 后者

content = """001-苹果价格-60
002-橙子价格-70
003-香蕉价格-80"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
p = re.compile("橙|蕉|7")
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)

括号-组选择

括号称之为 正则表达式的 组选择。 是从正则表达式 匹配的内容 里面 扣取出 其中的某些部分

content = """苹果,苹果是绿色的
橙子,橙子是橙色的
香蕉,香蕉是黄色的"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
p = re.compile("(.*),")
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)
content = """张三,手机号码15945678901
李四,手机号码13945677701
王二,手机号码13845666901"""
# re模块是python的内置模块,提供了对于正则表达式的支持
import re
# 正则表达式
p = re.compile("(.*),\D*(\d*)")
# 在content里面使用正则表达式查找内容,将找到的内容赋值给变量
message = p.findall(content)
print(message)

Python基础07相关推荐

  1. Python基础07 函数

    函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. 函数的定义 首先,我们要定义一个函数, 以 ...

  2. Python基础07互评成绩

    7-8 互评成绩 (25分 题目 输入格式: 输出格式: 算法逻辑 代码块 题目 学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩.系统需要去掉一个最高分和一个最低分,将剩 ...

  3. Python基础学习-Python中最常见括号()、[]、{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho

    Python基础学习-Python中最常见括号().[].{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho ...

  4. 七月在线python数据分析_七月在线Python基础+数据分析班+爬虫项目

    资源介绍 七月在线Python基础+数据分析班+爬虫项目 目录 ├─Python基础入门班2017年 ││代码.rar │└─视频 │xa0 xa0 01.第1课 入门基础.rar │xa0 xa0 ...

  5. 【Python基础】GitHub 星标 8.8w+,Python 小白 100 天学习计划,从新手到大师!

    本篇给大家介绍一个Python骨灰级别的学习项目. 2019年10月份的时候,一个<Python-100-days>的GitHub项目火了,霸榜GitHub热榜.此项目截止目前已经8.8万 ...

  6. 【Python基础】Python 100 例带你入门

    文章来源于Python与算法社区,作者振哥 大家好,我是振哥.这是我总结的 Python 100 个样例,原创作品,请大家多多关照. 以下所有代码全都至少运行一遍,确保可复现.易于理解.逐步完成入门到 ...

  7. Python基础day09【面向对象(封装、继承、多态)、重写、私有权限】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day09[面向对象(封装.继承.多态).重写.私有权限] Python基础day ...

  8. Python基础day07【文件读写、文件夹操作、面向对象(类、对象)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]   目录 01.复习 1.1.递归函数参数问题 1.2.格式化输出位数 1.3.extend函数解 ...

  9. Python基础day05【函数(局部变量、全局变量、多函数执行流程、函数返回值、函数参数)、拆包、引用、可变与不可变类型、函数注意事项】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day05[函数(函数传参的两种形式.函数形参).拆包.引用.可变与不可变类型.引 ...

最新文章

  1. 使用主机ip地址绑定GooglAppEngine站点
  2. 面试必问:如何访问 Redis 中的海量数据?
  3. React Native知识4-Image组件
  4. smartform 打印预览时转PDF查看
  5. Chrome中输入框默认样式移除
  6. 通过Java编写一个服务器理解动态Web,静态Web
  7. Mysql报错130_mysql 突然报错,连接不上
  8. c语言微信备份文件,文件保存后自动刷新微信小程序
  9. 富士康有麻烦了,iPhone产能已被削减
  10. 5.7 tensorflow2实现主成分分析(PCA) ——python实战(下篇)
  11. 基于D-S证据理论的数据融合研究与应用
  12. .net扫盲-网页对话框应用
  13. python操作cad的模块_Process Autocad by python
  14. 国产CPU 申威1621 异数OS基础组件理论性能测试报告
  15. 记一次菜鸟网络电话面试
  16. 【vue】使用手机app扫描二维码登录
  17. python查看list的shape_列表list、数组np.array等的len,size,shape操作
  18. 这样投简历,99%没面试机会!
  19. [改善Java代码]由点及面,一叶知秋----集合大家族
  20. 全球的MLOps和ML工具概览

热门文章

  1. 07-20210305在WIN10下通过USB口给华为海思Hi3516DV300刷机(鸿蒙系统)
  2. oracle stdevp函数,SQL Server与oracle两者区别之函数区别
  3. 【JAVA】图形用户界面练习
  4. Minecraft 从安装到入门
  5. Kubernetes利用CNI-bridge插件打通网络
  6. GO语言-第二节-顺序编程
  7. 「话题」为什么微信、钉钉撤回消息的时限不同?小米200万改LOGO值不值?
  8. Linux系统的PAM模块认证文件含义说明总结
  9. 【VS】VS Code安装、配置、使用(windows10 64)
  10. Python中最快的搜索引擎之一:ThreadSearch(自己开发)(abccdee1)