Python爬虫基础之正则表达式
目录
一、什么是正则表达式?
二、re.compile()编译函数
三、group()获取匹配结果函数
四、常用匹配规则
4.1匹配单个字符
4.2匹配前字符次数
4.3匹配原生字符串
4.4匹配字符串开头和结尾
4.5分组匹配
五、re.match()开头匹配函数
六、re.search()全文搜索函数
七、re.findall()查找所有函数
八、re.sub()与re.subn()查找替换函数
九、re.split()分割字符串函数
十、贪婪模式和非贪婪模式
一、什么是正则表达式?
所谓的正则表达式其实就是一些特殊字符规则组合。通过这些字符规则组合开发者可以检索并替换出一些符合这种规则的字符串文本数据。
二、re.compile()编译函数
可以将包含有正则表达式的字符串编译成字节码。
优点:之前每次调用re.match( )函数匹配字符串时,python解释器就会为其频繁的申请和释放空间,用来保存其正则表达式字符串。而通过调用re.complie( )函数,解释器只需为包含有正则表达式的字符串申请一次内存空间就可以了,以后每使用此正则表达式匹配字符串时就可以直接拿来用,而无需重复频繁为其申请内存空间,从而在很大程度上提高运行效率。
三、group()获取匹配结果函数
groups( )方法的返回值是一个元组,元组中包含正则表达式内所有捕获组()检索到的字符串。
group()方法用来获取正则表达式检索到的字符串。一般在re.match( )的正则表达式实参中一个小括号就是一个捕获组。
用法:group( 捕获组0[,捕获组1][,捕获组2][......] )
0: 表示获取正则表达式检索到的源字符串结果,这也是默认值。
1: 表示获取正则表达式中第一个()检索到的字符串
2: 表示获取正则表达式中第二个()检索到的字符串
以此类推........
四、常用匹配规则
4.1匹配单个字符
.(点):匹配任意一个字符,除了换行符'\n'。
[abc...]:匹配一个字符,此字符可以是a、b或c。也可以写成范围[a-z]。
\d:匹配一个数字,即0~9。
\D:匹配除数字外的任意一个字符。
\s:匹配一个空格,一个tab键相当于2个空格。
\S:匹配除空格或tab键之外的任意一个字符。
\w:匹配一个普通字符,即a-z、A-Z、0-9、_
\W:匹配一个非普通字符即特殊字符,如:空格、@、$等
运行结果:
4.2匹配前字符次数
* :前一个字符可以匹配0次、1次或多次即任意次。直到不满足匹配规则返回之前匹配到的字符串。
+ :前一个字符必须至少匹配1次,否则匹配失败。
?:前一个字符最多匹配1次或者不匹配返回空字符。
{m} :前一个字符必须精确匹配m次。
{m,} :前一个字符至少匹配m次,直到不满足匹配规则结束。
{mix,max} :前一个字符必须匹配min~max次 即最少匹配min次,最多匹配max次;且不能为负数。
注意:以上字符需要与前一个字符配合使用即作用于前字符。
4.3匹配原生字符串
在许多编程语言中"\"往往表示转义字符,如:\n表示换行、\t表示tab键;为了表示"\"本身需要再加一个\ ,形成”\\“格式。或者在字符串的前面加“r"字符:表示按肉眼看到的字符串原意检索。
4.4匹配字符串开头和结尾
^str :表示字符串开头,即匹配以str开头的字符串
[^a] :此时“^”表示取反,即匹配除字母a的任意一个字符
str$ :表示字符串结尾,即匹配字符串的结尾即检索的目标字符串必须以str结尾
4.5分组匹配
str1|str2 : 表示从左到右分别匹配str1或str2的正则字符串表达式。一旦有一方匹配成功则返回结果值。
(ab) :表示将括号中正则表达式匹配到的结果作为一个分组。即在正则表达式参数中一个括号代表一个分组。
\num : 表示引用正则表达式前面括号分组num匹配到的字符串。
(?P<name>) :表示给正则表达式的分组起别名。
(?P=name) :表示引用前面正则表达式分组别名name所匹配到的字符串。
五、re.match()开头匹配函数
re.match()函数只能匹配字符串的开头。如果要匹配的正则表达式字符串不在原字符串的开头则匹配不成功返回值None;匹配成功返回re.match类对象。
用法:re.match(pattern,string,flags)
pattern: 要匹配的正则表达式
string: 要检索的源字符串文本
flags: 标志位,用来控制正则表达式的匹配方式,如: re.I表示忽略大小写,re.M表示多行匹配,re.S使正则表达式中“.”的匹配包括换行符\n在内任意一个字符等等。
六、re.search()全文搜索函数
从全文中从前往后搜索指定字符串,一旦找到则立即返回搜索到的对象。
用法:re.search(pattern,dest, flags)
pattern: 正则表达式字符串
dest: 要对其搜索的文本字符串
flags: 标志位。re.I忽略大小写,re.M多行匹配
说明:span=(14,19)表示匹配到的字符串在源文本中的下标位置,不包含19。
七、re.findall()查找所有函数
用法:re.findall(pattern,dest_str,flags)
pattern: 正则表达式字符串
dest_str: 要对其搜索的文本字符串
flags: 控制正则表达式匹配方式。re.I忽略大小写,re.M多行匹配
八、re.sub()与re.subn()查找替换函数
re.sub( )函数: 将文本字符串中正则表达式查找到的字符串替换为指定的字符串后并返回。
用法:re.sub(pattern,sub,dest_str,counts=0,flags)
pattern: 匹配模式即正则表达式
sub: 替换为的字符串
dest_str: 要替换的文本字符串
counts: 替换的最大次数,默认为0表示替换全部
flags:控制正则表达式匹配方式
说明: re.subn( )函数与re.sub( )函数的功能一样。只不过在以元组的形式返回替换后的文本字符串时,还会包含原文被替换的字符串个数。
九、re.split()分割字符串函数
以文本字符串中的某个字符作为分割符,实现对文本字符串的分割并以列表的形式返回分割后的文本字符串。
用法:re.split(pattern, dest_str, max_split, flags)
pattern: 分割符
dest_str: 要分割的文本字符串
max_split: 最大分割数。默认为0表示无限制
flags: 设置正则表达式匹配的方式。
十、贪婪模式和非贪婪模式
贪婪模式:在满足正则规则的情况下尽可能多的匹配字符
非贪婪模式: 在满足正则规则的情况下尽可能少的匹配字符
在python正则表达式的数量匹配字符中默认是贪婪模式,如果想将正则表达式的匹配变为非贪婪模式只需在数量匹配字符的后面加上?如:"*",“+”,“?”,{min,max}
@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!
相关文章:
Python爬虫基础之正则表达式
目录 一、什么是正则表达式? 二、re.compile()编译函数 三、group()获取匹配结果函数 四、常用匹配规则 4.1匹配单个字符 4.2匹配前字符次数 4.3匹配原生字符串 4.4匹配字符串开头和结尾 4.5分组匹配 五、re.match()开头匹配函数 六、re.search()全文搜索…...
【LeetCode】双指针妙解有效三角形的个数
Problem: 611. 有效三角形的个数 文章目录 题目分析讲解算法原理复杂度Code 题目分析 首先我们来分析一下本题的思路 看到题目中给出的示例 题目的意思很简单,就是将给到的数字去做一个组合,然后看看这三条边是否可以构成三角形。那判断的方法不用我说&a…...
mysql 计算两点之间距离
先说一下我们可能会用到的一些场景,这样同学们可以先评估,该篇文章是否对你有帮助! 场景: 假设 美团,我点外卖时,系统会让我先进行定位,比如我定位在了 A 点,系统就会给我推荐&…...
c语言自定义头文件是什么情况下使用?一般在什么情况下引用自定义的头文件?一般在自定义头文件中写什么代码?
c语言自定义头文件是什么情况下使用?一般在什么情况下引用自定义的头文件?一般在自定义头文件中写什么代码? C语言自定义头文件是一种用来封装函数和变量声明的文件,它通常用于将一组相关的函数和变量的声明集中在一个地方&#…...
electron应用打包成功纪念一下
electron应用打包成功纪念一下,以前曾经行过后来打包各种报错,现在有空就尝试解决一下 首先安装nvm能够方便切换node版本 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash 顺利安装后你用nvm list查看node列表时会…...
远程办公中安全远程访问解决方案
什么是安全远程访问 安全的远程访问是一个至关重要的过程,可让您使用互联网从远处完全控制某人的设备。为了确保安全,为受保护的远程访问采取了额外的身份验证和加密措施。 为什么安全远程访问解决方案很重要 当 IT 技术人员从远处帮助人们解决计算机…...
StartUp启动框架-Android启动性能
简述 当谈论Android应用程序的启动性能时,StartUp启动框架是一个不可忽视的关键工具。它旨在优化应用程序的启动过程,确保用户在打开应用时能够迅速获得流畅、高效的体验。让我们来深入了解StartUp框架的作用和重要性,以及它是如何改善Andro…...
Positive Technologies:五分之四的网络攻击具有针对性
Positive Technologies 对 2023 年第二季度的相关网络威胁进行了分析。报告显示,自今年年初以来,有针对性的攻击数量增加了 10%,目前占 78%。专家们注意到利用漏洞的大规模攻击和大量用户个人数据的泄露。此外,在此期间࿰…...
clickhouse的另类表引擎
clickhouse常用的MergeTree引擎外,还有特殊的引擎 1,memory引擎,顾名思义,数据是存储在内存中,数据不会被压缩也不会倍格式化转换数据在内存中保存的形态与查询时看到的如出一辙,重启ck数据丢失 2ÿ…...
Uniapp新版本打包后覆盖安装,新增的页面无法跳转,需退出重新启动才可以打开的解决方案
最近写uniapp项目,发现一个坑,在新版本覆盖安装后直接打开APP,新增的页面竟然无法跳转,需要重新启动才可以正常打开,在网上查了很多方法,最终总结下来有以下几点: 1.看打的是debug包还是releas…...
系统架构设计高级技能 · 面向服务架构设计理论与实践
点击进入系列文章目录 系统架构设计高级技能 面向服务架构设计理论与实践 一、SOA的相关概念1.1SOA的定义1.2 业务流程与业务流程执行语言 二、SOA的发展史三、SOA与微服务的区别三、SOA的参考架构四、SOA的主要协议规范五、SOA的设计标准要求六、SOA的作用与设计原则七、SOA的…...
QT注册界面练习(信号与槽实现页面跳转)
一、注册界面练习思路以及具体代码 在完成注册页面搭建的前提下,通过信号与槽机制实现多组件之间的相互通信,实现页面跳转。 基本步骤: 首先,将注册页面的登录按钮与成功登陆信号绑定,当用户名与密码均匹配时…...
MySQL从入门到精通【进阶篇】之 主从复制详解
文章目录 0.前言1. 主从复制简介2. 主从复制的工作流程主从复制过程中的日志文件作用(Binary Log)和中继日志(Relay Log) 3. MySQL主从复制的配置4. 参考资料 0.前言 MySQL的主从复制和读写分离是数据库领域的基本概念࿰…...
vue使用qrcodejs2生成二维码
目录 概要 构建展示的vue组件qrcode.vue 组件的使用 概要 项目中用到需要展示二维码的样式,想到了qrcode 例如: 前提:安装包 npm install qrcodejs2 --save 构建展示的vue组件qrcode.vue <template><div style"width: …...
python注释
任何编程语言都少不了注释,Python也不例外,以下是Python注释的具体用法: 单行注释 Python编程语言的单行注释常以#开头,单行注释可以作为单独的一行放在被注释代码行之上,也可以放在语句或者表达式之后。 实例&…...
update-alternatives详解
1.功能作用 update-alternatives是dpkg的实用工具,用来维护系统命令的符号链接,以决定系统默认使用什么命令。 在Debian系统中,我们可能会同时安装有很多功能类似的程序和可选配置,如Web浏览器程序(firefox,konquero…...
JavaScript 编写更好的条件语句
在任何编程语言中,代码需要根据不同的条件在给定的输入中做不同的决定和执行相应的动作。 例如,在一个游戏中,如果玩家生命点为0,游戏结束。在天气应用中,如果在早上被查看,显示一个日出图片,如…...
聊聊PBE算法
序 本文主要研究一下PBE算法 PBE PBE即Password Based Encryption,基于口令的加密,它是一种组合算法,即一般是哈希对称算法,比如PBEWithMD5AndDES,就是用MD5做哈希,用DES做加解密,而其密钥则…...
用MFC打开外部程序
在MFC(Microsoft Foundation Classes)中,你可以使用ShellExecute函数来打开Notepad并加载指定的文件。ShellExecute函数是Windows API的一部分,它可以执行与操作系统相关的操作,例如打开文件、运行程序等。 以下是在M…...
基于全新电脑环境安装pytorch的GPU版本
前言: 距离第一次安装深度学习的GPU环境已经过去了4年多(当时TensorFlow特别麻烦),现在发现安装pytorch的GPU版本还是很简单方便的,流程记录如下。 安装步骤: 步骤一:官网下载Anaconda Free…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...















