正则表达式讲解

  • 常用正则表达式
    • re库
    • re.search
    • re.findall
    • 教程地址

常用正则表达式

字符 描述
\d 代表任意数字,就是阿拉伯数字 0-9 这些玩意。
\D 大写的就是和小写的唱反调,\d 你代表的是任意数字是吧?那么我 \D 就代表不是数字的。
\w 代表字母,数字,下划线。也就是 a-z、A-Z、0-9、_。
\W 跟 \w 唱反调,代表不是字母,不是数字,不是下划线的。
\n 代表一个换行。
\r 代表一个回车。
\f 代表换页。
\t 代表一个 Tab 。
\s 代表所有的空白字符,也就是上面这个:\n、\r、\t、\f。
\S 跟 \s 唱反调,代表所有不是空白的字符。
\A 代表字符串的开始。
\Z 代表字符串的结束。
^ 匹配字符串开始的位置。
$ 匹配字符创结束的位置。
. 代表所有的单个字符,除了 \n \r
[…] 代表在 [] 范围内的字符,比如 [a-z] 就代表 a到z的字母
[^…] 跟 […] 唱反调,代表不在 [] 范围内的字符
{n} 匹配在 {n} 前面的东西,比如: o{2} 不能匹配 Bob 中的 o ,但是能匹配 food 中的两个o。
{n,m} 匹配在 {n,m} 前面的东西,比如:o{1,3} 将匹配“fooooood”中的前三个o。
{n,} 匹配在 {n,} 前面的东西,比如:o{2,} 不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。
* 和 {0,} 一个样,匹配 * 前面的 0 次或多次。 比如 zo* 能匹配“z”、“zo”以及“zoo”。
+ 和{1,} 一个样,匹配 + 前面 1 次或多次。 比如 zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。
和{0,1} 一个样,匹配 ?前面 0 次或 1 次。
a b
() 匹配括号里面的内容。

re库

如果我们想要从
muyang has 100 bananas
拿到100这个数字我们就可以
import recontent = 'muyang has 100 bananas'
res = re.match('^mu.*(\d+)\s.*s$',content)
print(res.group(1))

()的意思表示 我们需要的东西

那么如果我们想要 100 这个数字呢?

import recontent = 'muyang has 100 bananas'
res = re.match('^mu.*?(\d+)\s.*s$',content)
print(res.group(1))

看出有什么区别吗?

多了一个?
在这里呢,涉及到两个概念

一个是:贪婪匹配
另一个是:非贪婪匹配

所谓贪婪匹配

就是我们的第一段代码
一个数一个数都要去匹配
而非贪婪呢

我们是直接把 100 给匹配出来了

刚才我们用到了.*?

是我们在匹配过程中最常使用到的

表示的就是匹配任意字符
但是
.*?的 . 代表所有的单个字符,除了 \n \r
如果我们的字符串有换行了
怎么办呢?

比如这样

content = """muyang  has 100
bananas"""

直接用 re.S 就可以了

import recontent = """muyang has 100
bananas"""
res = re.match('^mu.*?(\d+)\s.*s$',content,re.S)
print(res.group(1))

re.search

它会直接去扫描字符串
然后把匹配成功的第一个结果的返回给你

import recontent = """muyang  has 100
bananas"""
res = re.search('mu.*?(\d+)\s.*s',content,re.S)
print(res.group(1))

这样我们可以获取到100

但是如果我们的内容是

content = """muyang has 100 bananas;
muyang   has 100 bananas;
muyang   has 100 bananas;
muyang has 100 bananas;"""

想要获取所有的 100 呢?

这时候就要用到 re 的另一个方法了

re.findall

通过它我们就能轻松的获取所有匹配的内容了

import recontent = """muyang has 100 bananas;
muyang has 100 bananas;
muyang has 100 bananas;
muyang has 100 bananas;"""
res = re.findall('mu.*?(\d+)\s.*?s;',content,re.S)
print(res)

教程地址

B站教程链接: https://www.bilibili.com/video/BV1gK4y1R7Ha?p=5.

python爬虫加群交流:820541914

2021最新《python爬虫从0-1》5.正则表达式讲解相关推荐

  1. Python爬虫之豆瓣排行榜(正则表达式)

    Python爬虫之豆瓣排行榜(正则表达式) 1. 项目目标 使用Chrome浏览器打开网页https://maoyan.com/ ,切换到[榜单],[TOP100榜].本次项目就是要获取豆瓣排名Top ...

  2. python爬虫防呆笔记:正则表达式篇之一

    python爬虫笔记 第一部分:正则表达式 基本效果展示 加载猫眼电影网的html文本作为训练文本 这里先讲一下header,这里的header就写一项,不写就爬不出来,这一项是User-Agent, ...

  3. 硬核来袭!!!一篇文章教你入门Python爬虫网页解析神器——BeautifulSoup详细讲解

    文章目录 一.BeautifulSoup介绍 二.安装 三.bs4数据解析的原理 四.bs4 常用的方法和属性 1.BeautifulSoup构建 1.1 通过字符串构建 1.2 从文件加载 2.Be ...

  4. 2019最新Python爬虫高频率面试题总结(一)

    今天给大家出一个关于Python爬虫面试题的总结,相对于来说出现频率比较高的一些! 1. 为什么 requests 请求需要带上 header? 原因是:模拟浏览器,欺骗服务器,获取和浏览器一致的内容 ...

  5. 从入门到入土:Python爬虫学习|实例练手|详细讲解|爬取腾讯招聘网|一步一步分析|异步加载|初级难度反扒处理|寻找消失的API来找工作吧

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  6. python爬虫系列:xpath爬取图片讲解(零基础向)

    系列文章目录 python爬虫系列:BeautifulSoup爬取小说讲解(零基础向)(版权问题下架) python爬虫系列:requests下载酷我音乐讲解(零基础向)(版权问题下架) 文章目录 目 ...

  7. 2021最新python学习视频教程

    本文包含了千锋教育Python学习路线全阶段视频教程(从入门到精通),涵盖了你所需要掌握的所有前沿技术及知识点! 2021年全网最新,史上最全Python学习路线,从基础到项目实战应有尽有,牛批卡拉斯 ...

  8. 爬虫攻守道 - 2023最新 - Python Selenium 实现 - 数据去伪存真,正则表达式谁与争锋 - 爬取某天气网站历史数据

    前言 前面写过3篇文章,分别介绍了反爬措施,JS逆向+ajax获取数据,以及正则表达式匹配开头.结尾.中间的用法.第3篇算是本文 Python Selenium 爬虫实现方案的子集,大家可以参照阅读. ...

  9. 小小Python爬虫(0)

    #目前问题:爬一会就报"RuntimeError: can't start new thread"错误 #Python的语法有些不太适应,这两天从网上搬了些代码组了个小爬虫,把糗事 ...

最新文章

  1. js 判断数据类型的几种方法
  2. 读javascript高级程序设计15-Ajax,CORS,JSONP,Img Ping
  3. 虚拟机做linux服务器,用 VirtualBox 的 linux 虚拟机做服务器
  4. 在centos上搭建svn服务器
  5. swot分析法案例_新媒体小白如何上手案例分析(SWOT分析法)
  6. HALCON示例程序clip.hdev曲别针方向识别
  7. linux网络编程之inet_addr和inet_ntoa使用总结
  8. linux操作系统 抢占式,Linux操作系统内核抢占补丁的基本原理(2)
  9. Java调用SuperMap iServerJava6R的REST API
  10. 反编译Android将状态栏高度,反编译SystemUI.apk 实现状态栏时间居中
  11. python中getattr()的用法
  12. ResNet网络结构详解与模型的搭建
  13. java处理图片的所有类_Java的图片处理工具类
  14. 朴新教育澄清破产传闻:债务重组是最有利方案 公司继续经营
  15. Android 一定要培训吗,安卓开发需要学什么2
  16. 用Elasticsearch构建电商搜索平台(有赞)
  17. 【Tableau 设计提示16】如何在 Tableau 中使用标记(批注)
  18. 美国共享单车数据分析
  19. [Power Query] 分组依据
  20. 非常有用的一个正则表达式.匹配多个任意字符

热门文章

  1. 遥感智能解译相关产品及公司
  2. php imap函数详解,Imap是什么意思,php imap 函数详解
  3. 复现ReDet RTX 3090 pytorch1.8.1
  4. Redis五大数据类型常用命令
  5. jyzy noip模拟赛5.22-2
  6. 一卡难求,什么时候才能买到原价显卡?
  7. c语言用质因数分解法求最大公约数,分解质因数法求最大公约数(javascrip实现)
  8. 什么是你最关键的人脉
  9. ISP——坏点矫正(Defective Pixel Correction,DPC)
  10. excel单元表格里怎么嵌入表格?Smartbi都能解决