零基础学 Python(2018 版)
尹会生
前游戏公司技术总监,前新浪网技术经理
80141 人已学习
新⼈⾸单¥68
课程目录
已完结/共 72 讲
第一章 :Python介绍和安装 (3讲)
第二章 :Python基础语法 (3讲)
第四章 :条件与循环 (5讲)
第五章 :映射与字典 (2讲)
第六章 :文件和输入输出 (2讲)
第七章 :错误和异常 (1讲)
第九章 :模块 (1讲)
第十章 :语法规范 (1讲)
第十一章 :面向对象编程 (4讲)
第十二章 :多线程编程 (2讲)
第十六章 :综合案例 & 结课测试 (1讲)
特别放送 (1讲)
零基础学 Python(2018 版)
登录|注册
留言
8
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 44 | 正则表达式分组功能实例
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | Python语言的特点
02 | Python的发展历史与版本
03 | Python的安装
04 | Python程序的书写规则
05 | 基础数据类型
06 | 变量的定义和常用操作
07 | 序列的概念
08 | 字符串的定义和使用
09 | 字符串的常用操作
10 | 元组的定义和常用操作
11 | 列表的定义和常用操作
12 | 条件语句
13 | for循环
14 | while循环
15 | for循环语句中的if嵌套
16 | while循环语句中的if嵌套
17 | 字典的定义和常用操作
18 | 列表推导式与字典推导式
19 | 文件的内建函数
20 | 文件的常用操作
21 | 异常的检测和处理
22 | 函数的定义和常用操作
23 | 函数的可变长参数
24 | 函数的变量作用域
25 | 函数的迭代器与生成器
26 | Lambda表达式
27 | Python内建函数
28 | 闭包的定义
29 | 闭包的使用
30 | 装饰器的定义
31 | 装饰器的使用
32 | 自定义上下文管理器
33 | 模块的定义
34 | PEP8编码规范
35 | 类与实例
36 | 如何增加类的属性和方法
37 | 类的继承
38 | 类的使用-自定义with语句
39 | 多线程编程的定义
40 | 经典的生产者和消费者问题
41 | Python标准库的定义
42 | 正则表达式库re
43 | 正则表达式的元字符
44 | 正则表达式分组功能实例
45 | 正则表达式库函数match与search的区别
46 | 正则表达式库替换函数sub()的实例
47 | 日期与时间函数库
48 | 数学相关库
49 | 使用命令行对文件和文件夹操作
50 | 文件与目录操作库
51 | 机器学习的一般流程与NumPy安装
52 | NumPy的数组与数据类型
53 | NumPy数组和标量的计算
54 | NumPy数组的索引和切片
55 | pandas安装与Series结构
56 | Series的基本操作
57 | Dataframe的基本操作
58 | 层次化索引
59 | Matplotlib的安装与绘图
60 | 机器学习分类的原理
61 | Tensorflow的安装
62 | 根据特征值分类的模型和代码
63 | 网页数据的采集与urllib库
64 | 网页常见的两种请求方式get和post
65 | HTTP头部信息的模拟
66 | requests库的基本使用
67 | 结合正则表达式爬取图片链接
68 | Beautiful Soup的安装和使用
69 | 使用爬虫爬取新闻网站
70 | 使用爬虫爬取图片链接并下载图片
强势回归:零基础学Python2022版来啦!
71 | 如何分析源代码并设计合理的代码结构&结课测试
本节摘要

课程源码、课件及课后作业地址:

https://gitee.com/geektime-geekbang/geekbangpython

登录 后留言

全部留言(8)

  • 最新
  • 精选
Serendipity
\d 不是匹配一串数字,相当于 [0-9]+ 吗?为什么还要在 d 后面加上一个 + 呢?

作者回复: \d 相当于 [0-9]

2019-10-23
2
Guti
\s不是说错了, \s For Unicode (str) patterns: Matches Unicode whitespace characters (which includes [ \t\n\r\f\v], and also many other characters, for example the non-breaking spaces mandated by typography rules in many languages). If the ASCII flag is used, only [ \t\n\r\f\v] is matched (but the flag affects the entire regular expression, so in such cases using an explicit [ \t\n\r\f\v] may be a better choice). For 8-bit (bytes) patterns: Matches characters considered whitespace in the ASCII character set; this is equivalent to [ \t\n\r\f\v]. \S Matches any character which is not a whitespace character. This is the opposite of \s. If the ASCII flag is used this becomes the equivalent of [^ \t\n\r\f\v] (but the flag affects the entire regular expression, so in such cases using an explicit [^ \t\n\r\f\v] may be a better choice).

作者回复: \s 匹配空白 \S 匹配非空白 空白指制表符\t 换行符\n 等

2018-10-05
2
潘华引Simon Pan
月份和日期的正则是不是考虑下超出上限的情况,比如出现13月或者45日

作者回复: 正则的编写要根据具体需求来决定,如果数据“干净”,比如从一篇论文里面取月份日期可以使用[0-9][0-9]形式,因为数据都是事先处理过的 但是如果要使用正则判断用户输入的月份日期是不是合法就要用[1-9]|(1[012])和[1-9]|([12][0-9])|(3[01])这样的形式, 考虑到日期还有2月29这种输入,正则其实并不是判断用户输入年月日的最优解,可以考虑使用下拉列表或者程序逻辑判断

2018-08-21
2
TIAN
请问,这里为什么需要加r,/d为什么不需要转意?不转意不就证明照愿望输出/d吗?

作者回复: r表示字符串是raw string,它所谓的"不要转义",指的是字符串不要被其他功能(格式化输出、字符串处理等)转义。要按照原原本本的样子交给re.match()来处理。 如果中间被转义的话,到re.match()已经不是原有的样子,也就匹配不到想要的字符串了

2022-01-04
1
源哥60
# ^开头限定,$结尾限定 print('8------',re.compile('^cat').search('cat4h'),re.compile('^cat').search('ycat4h')) print('9------',re.compile('cat$').search('ttcat'),re.compile('^cat').search('ttcat4')) #{m}出现m次,{m,n}出现[m,n]次,{m,}至少出现m次 print('10------',re.compile('ca{2}t').search('1caat2'),re.compile('ca{2}t').search('1cat2'),re.compile('ca{2}t').search('1caaat2')) print('11------',re.compile('ca{2,3}t').search('1caat2'),re.compile('ca{2,3}t').search('1caaat2'),re.compile('ca{2,3}t').search('1cat2')) print('12------',re.compile('ca{2,}t').search('1cat2'),re.compile('ca{2,}t').search('1caat2'),re.compile('^ca{2,}t').search('caaat27')) # [abc]只匹配枚举的字符(范围写法:[1-9],[a-z]) print('13------',re.compile('c[abc]t').search('1cbt2'),re.compile('c[abc]t').search('cdt'),re.compile('c[1-9]t').search('c6t')) # | 左边整体或右边整体 print('14------',re.compile('c[abc]|5t').search('1cbjj2'),re.compile('c[abc]|5t').search('1c995t2y'),re.compile('c[abc]|5t').search('1cht2')) # \s 任意单空白符,等价于 [\t\n\r\f\v],\S 任意非空白符 print('15------',re.compile('c\st').search('1c th'),re.compile('c\s+t').search('1c tu'),re.compile('c\st').search('1ctu')) # \d 数字单字符,同[123456789]=[1-9]=\d print('15------',re.compile('c\dt').search('1c5th'),re.compile('c\dt').search('1c57th'),re.compile('c\d{3,}t').search('1c5778th')) # \D 非数字单字符 print('16------',re.compile('c\Dt').search('1c5th'),re.compile(r'c\Dt').search('1c-th')) # ()用于分组,\数字 分组引用 print('17------',re.compile(r'(cat)\1').search('catcat')) # | 左边整体或右边整体 print('18------',re.compile(r'c(123|456)t').search('c123t'),re.compile(r'c(123|456)t').search('c456t'),re.compile(r'c(123|456)t').search('c123456t')) # .*? 不使用贪婪模式 (无问号则会贪婪匹配) print('19------',re.compile(r'cat.*?').search('cat123'),re.compile(r'cat.*').search('cat123'),re.compile(r'cat.*?').search('cat'))
2021-08-01
1
pan xi er
为啥我用p.match('2018-05-10').groups()输出的是('8', '5', '0')
2020-05-06
1
1
o0oi1i
打卡44
2020-02-27
硕杨Sxuya
强烈疑惑,为什么第一组的数字标记不是 ```group(0)```,而是 ```group(1)```,一点都不程序员思路
2018-11-15
1
收起评论