~点击 蓝字 关注,获取更多资源~

0

前言

上一篇文章,2020,还不会正则???,和小伙伴们一起学习了 Python 中的正则表达式,读完之后,总感觉少了点什么东西,无法尽兴?就好像爱你们的心少了一块一样。?

However,小编现在要宣布一条好消息,这篇文章之后,没有你看不懂的正则表达式。好了,废话少说,接下来小编将和小伙伴们一起深入探究 Python 中的正则表达式的构成,让小伙伴们真正掌握正则。

1

Python  中的正则表达式 の 简介

正则表达式, 是一种小型的、高度专业化的编程语言,在 Python 中,通过内嵌集成 re 模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由 C 编写的匹配引擎执行。

2

正则表达式中常用的字符含义

2.1 普通字符和 11 个元字符

Note:

  • 反斜杠后边跟元字符去除特殊功能,即特殊字符普通化

  • 反斜杠后边跟普通字符实现特殊功能,即普通字符特殊化,亦即预定义字符

  • 引用序号对应的字组所匹配的字符串


2.2 预定义字符集(可以写在字符集[…]中)


2.3 特殊分组用法

实例解君愁:

在这个例子中,我们实现了匹配网址、电话号码以及Email,其中a-z代表匹配任意的小写字母,\s表示匹配任意的空白字符,*就代表匹配前面的字符任意多个,\D 表示匹配非数字字符。是不是感觉不过瘾,那就再来一个。。。


实例解君愁:

 1import re 2 3html = '''
4 5    

经典老歌

6 7    

8 9        经典老歌列表1011    

1213    1415        一路上有你1617        1819            沧海一声笑2021        2223        2425            往事随风2627        2829        光辉岁月3031        记事本3233        3435            但愿人长久3637        3839    4041

'''
42# 匹配歌手和歌名
43matched = re.findall(r'(.*?)', html, re.S)
44# 输出
45for ma in matched:
46    print(ma)

在这个实例中,有一段HTML文本,可以观察到,ul 节点里有许多li节点,其中 li 节点中有的包含a节点,有的不包含a节点,a节点还有一些相应的属性——超链接和歌手名。首先,我们尝试提取 class 为 active 的 li 节点内部的超链接包含的歌手名和歌名,此时需要提取第三个 li 节点下 a 节点的 singer 属性和文本。

此时正则表达式可以以 li 开头,然后寻找一个标志符 active,中间的部分可以用.*?来匹配。接下来,要提取 singer 这个属性值,所以还需要写入singer="(.*?)",这里需要提取的部分用小括号括起来,以便用 group() 方法提取出来,它的两侧边界是双引号。然后还需要匹配 a 节点的文本,其中它的左边界是>,右边界是。然后目标内容依然用 (.*?) 来匹配,所以最后的正则表达式就变成了:

(.*?)a>

这两个实例看下来,不知小伙伴对正则表达式的理解有没有更上一层楼?


3

总结 re 模块中常用函数

在这里,小编给小伙伴们列出了常用函数,如果小伙伴们具体记不清每个函数的具体用法,请动动手指点下链接:2020,还不会正则???


4

正则需要注意的点

4.1 match 、search、findall的区别

match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,返回 None;

search 匹配整个字符串,直到找到第一个匹配项;

findall匹配整个字符串,返回所有匹配项构成的一个列表,如果没有匹配项,则返回空列表。

4.2 贪婪匹配与非贪婪匹配

*?,+?,??,{m, n}? 前面的 * , + , ? 的都是贪婪匹配,也就是尽可能匹配,在其后面加 ?号,使其变成惰性匹配。

有疑惑,没关系,小编来帮你。

实例解君愁

这个实例中,第一个匹配时,.* 属于贪婪匹配,会匹配尽可能多的字符,故匹配了1234567,然后剩给 \d+ 的只有8了;第二个匹配时,.*? 属于非贪婪匹配,只匹配了一个a,留给 \d+ 的数字字符就是12345678了。后面两组的分析,就留给小伙伴们了哟。。。

絮叨:在经过小编精心安排的与正则表达式相关的文章的洗礼后,尤其是这一篇保姆级教程,相信小伙伴们都有收获,小编希望大家多多使用,只有在将能力内化后,能力才是属于自己的。小伙伴们,你们的关注、分享、点赞、在看就是我更新最大的支持!!!


PS:私信/提问/建议/需求可以在本公众号直接私信,也可以参与讨论,后台可以看到的哟,有时间即会回复,偶尔的延迟和疏漏还请小伙伴们谅解,蟹蟹。

扫码关注不迷路

判断是不是链接 正则_Python 正则表达式 保姆级教程,小学生都看得懂!!相关推荐

  1. 自媒体人平台运营保姆级教程!速看!

    自媒体人平台运营保姆级教程!速看! 一.三大媒体发布平台分析 微博:微博是指一种基于用户关系信息分享.传播以及获取的通过关注机制分享简短实时信息的广播式的社交媒体.网络平台,允许用户通过Web.Wap ...

  2. java正则表达式保姆级教程,从小白到高手

    目录 一.正则表达式原字符 1.**限定符**.**转义符** 2.**字符匹配符** 3.**捕获分组**.**非捕获分组** 4.**特殊字符** 5.**选择匹配符** 6.常用正则表达式 二. ...

  3. vue项目打包wap2app项目生成apk保姆级教程适合新手看,建议收藏

    一.需要提前准备的有: 1.已部署到云端的网站+域名 2.下载软件HBuilder X, 下载地址官网. 3.创建项目 重要的配置部分来了 二.部分配置修改 问题1:如果你的网站没有事先为顶部预留安全 ...

  4. js对象、数组、字符串操作总结(保姆级教程)

    对象操作 1. 扩展运算符 作用是遍历某个对象或者数组 testMethod() {// 三个点 ... 俗称扩展运算符或延展运算符,需要注意的是扩展运算符在拷贝的时候只能深拷贝第一层,第二层及以下都 ...

  5. 数仓建设保姆级教程,离线和实时一网打尽(理论+实战)

    本文大纲: 因内容较多,带目录的PDF查看是比较方便的,点击下方链接获取完整PDF版: 数仓建设保姆级教程PDF文档 一.数仓基本概念 1. 数据仓库架构 我们在谈数仓之前,为了让大家有直观的认识,先 ...

  6. 50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 下

    文档大纲: 本文上半部分之前已经发过了,传送门:50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 上 此篇文章是整个文档的下半部分,将接着上半部分从第五章开始. 五.实时数仓建设核心 ...

  7. Ubuntu18保姆级教程及其jdk和hadoop安装含资源

    Ubuntu18保姆级教程及其hadoop安装含资源 安装Ubuntu 新建Ubuntu虚拟机 1.点击新建 2.自定义虚拟机的名称,修改虚拟机所在文件夹,默认为C盘,建议改到C盘外的其他盘,然后点击 ...

  8. 金融数据获取:当爬虫遇上要鼠标滚轮滚动才会刷新数据的网页(保姆级教程)

    目录 1. 谁这么会给我整活儿 2. Selenium模拟网页浏览器爬取 2.1 安装和准备工作 2.2.1 高度判断 2.2.2 顶部距离判断 3: 爬取内容 4: 完整代码,结果展示 1. 谁这么 ...

  9. 图片适应窗口_毕业论文排版保姆级教程——图片和公式排版

    [小技巧]Origin作图过程中如何让图看起来更生动 2020-05-30 [小技巧]简单设置让你origin导出的图片不在有大白边 2020-05-29 [干货放送]萤火科研资源免费赠送第一期--必 ...

最新文章

  1. sql查询百分之20到百分之40的数据_拼多多面试题:如何查找前20%的数据?
  2. python画圆形螺旋线_PS画结构素描与示范-金属管道台灯(电脑绘画)
  3. 像素包装:在内存中并不以紧密形式排列
  4. 【Level 08】U07 Mixed Feelings L5 Front page news
  5. java 正则表达式 table_JavaEdge/Java/Java中正则表达式.md at master · VegTableBird/JavaEdge · GitHub...
  6. 一次安装tengine的经历
  7. Node-webpack基本使用和详细案例
  8. 【渝粤题库】陕西师范大学800003 中国地理
  9. matlab波浪力的数值模拟,【干货】二维波浪水槽以及波浪传播变形的数值模拟(附详细步骤)...
  10. 转载:IEEE1588 ( PTP ) 协议简介
  11. 数据驱动故障诊断方法汇总
  12. 每日一思(2022.5.19)——前无古人后无来者
  13. 从 OKR 工作法到 OKRs-E,落地OKR不能错过的转变
  14. c++ 中的 LPCTSTR类型
  15. c++解一元三次方程
  16. 做中国强制性CCC认证需要多少钱
  17. HUELOJ 1109: 打印数字图形(函数专题)
  18. 小议去哪儿与太平洋电脑城^_^
  19. 【数据结构】插入排序(直接插入排序 希尔排序)
  20. 由RGB到HSV的转换详解

热门文章

  1. jq修改iframe html代码,使用jQuery替换iframe的所有内容(包括doctype和html标签)
  2. amd同步多线程_AMD下一代锐龙APU实锤!Zen3、RDNA2绝配
  3. 红米note3android驱动,红米note3 mtp驱动
  4. ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小
  5. Linux之chattr命令详解
  6. python类、模块、包
  7. html怎么让方块自动旋转,纯CSS3做的的3D旋转方块
  8. python txt提取特定数据_Python提取列表中的内容 用“python”怎么提取文件里的指定内容?...
  9. python open找不到文件的原因_浅谈python在提示符下使用open打开文件失败的原因及解决方法...
  10. 若有代数式,则以下能够正确表示该代数式的c语言表达是是 07年4月,2007年4月全国计算机等级考试二级笔试试卷...