2021最新《python爬虫从0-1》5.正则表达式讲解
正则表达式讲解
- 常用正则表达式
- 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.正则表达式讲解相关推荐
- Python爬虫之豆瓣排行榜(正则表达式)
Python爬虫之豆瓣排行榜(正则表达式) 1. 项目目标 使用Chrome浏览器打开网页https://maoyan.com/ ,切换到[榜单],[TOP100榜].本次项目就是要获取豆瓣排名Top ...
- python爬虫防呆笔记:正则表达式篇之一
python爬虫笔记 第一部分:正则表达式 基本效果展示 加载猫眼电影网的html文本作为训练文本 这里先讲一下header,这里的header就写一项,不写就爬不出来,这一项是User-Agent, ...
- 硬核来袭!!!一篇文章教你入门Python爬虫网页解析神器——BeautifulSoup详细讲解
文章目录 一.BeautifulSoup介绍 二.安装 三.bs4数据解析的原理 四.bs4 常用的方法和属性 1.BeautifulSoup构建 1.1 通过字符串构建 1.2 从文件加载 2.Be ...
- 2019最新Python爬虫高频率面试题总结(一)
今天给大家出一个关于Python爬虫面试题的总结,相对于来说出现频率比较高的一些! 1. 为什么 requests 请求需要带上 header? 原因是:模拟浏览器,欺骗服务器,获取和浏览器一致的内容 ...
- 从入门到入土:Python爬虫学习|实例练手|详细讲解|爬取腾讯招聘网|一步一步分析|异步加载|初级难度反扒处理|寻找消失的API来找工作吧
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- python爬虫系列:xpath爬取图片讲解(零基础向)
系列文章目录 python爬虫系列:BeautifulSoup爬取小说讲解(零基础向)(版权问题下架) python爬虫系列:requests下载酷我音乐讲解(零基础向)(版权问题下架) 文章目录 目 ...
- 2021最新python学习视频教程
本文包含了千锋教育Python学习路线全阶段视频教程(从入门到精通),涵盖了你所需要掌握的所有前沿技术及知识点! 2021年全网最新,史上最全Python学习路线,从基础到项目实战应有尽有,牛批卡拉斯 ...
- 爬虫攻守道 - 2023最新 - Python Selenium 实现 - 数据去伪存真,正则表达式谁与争锋 - 爬取某天气网站历史数据
前言 前面写过3篇文章,分别介绍了反爬措施,JS逆向+ajax获取数据,以及正则表达式匹配开头.结尾.中间的用法.第3篇算是本文 Python Selenium 爬虫实现方案的子集,大家可以参照阅读. ...
- 小小Python爬虫(0)
#目前问题:爬一会就报"RuntimeError: can't start new thread"错误 #Python的语法有些不太适应,这两天从网上搬了些代码组了个小爬虫,把糗事 ...
最新文章
- js 判断数据类型的几种方法
- 读javascript高级程序设计15-Ajax,CORS,JSONP,Img Ping
- 虚拟机做linux服务器,用 VirtualBox 的 linux 虚拟机做服务器
- 在centos上搭建svn服务器
- swot分析法案例_新媒体小白如何上手案例分析(SWOT分析法)
- HALCON示例程序clip.hdev曲别针方向识别
- linux网络编程之inet_addr和inet_ntoa使用总结
- linux操作系统 抢占式,Linux操作系统内核抢占补丁的基本原理(2)
- Java调用SuperMap iServerJava6R的REST API
- 反编译Android将状态栏高度,反编译SystemUI.apk 实现状态栏时间居中
- python中getattr()的用法
- ResNet网络结构详解与模型的搭建
- java处理图片的所有类_Java的图片处理工具类
- 朴新教育澄清破产传闻:债务重组是最有利方案 公司继续经营
- Android 一定要培训吗,安卓开发需要学什么2
- 用Elasticsearch构建电商搜索平台(有赞)
- 【Tableau 设计提示16】如何在 Tableau 中使用标记(批注)
- 美国共享单车数据分析
- [Power Query] 分组依据
- 非常有用的一个正则表达式.匹配多个任意字符
热门文章
- 遥感智能解译相关产品及公司
- php imap函数详解,Imap是什么意思,php imap 函数详解
- 复现ReDet RTX 3090 pytorch1.8.1
- Redis五大数据类型常用命令
- jyzy noip模拟赛5.22-2
- 一卡难求,什么时候才能买到原价显卡?
- c语言用质因数分解法求最大公约数,分解质因数法求最大公约数(javascrip实现)
- 什么是你最关键的人脉
- ISP——坏点矫正(Defective Pixel Correction,DPC)
- excel单元表格里怎么嵌入表格?Smartbi都能解决