当前位置: 首页 > news >正文

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爬虫基础之正则表达式

目录 一、什么是正则表达式&#xff1f; 二、re.compile()编译函数 三、group()获取匹配结果函数 四、常用匹配规则 4.1匹配单个字符 4.2匹配前字符次数 4.3匹配原生字符串 4.4匹配字符串开头和结尾 4.5分组匹配 五、re.match()开头匹配函数 六、re.search()全文搜索…...

【LeetCode】双指针妙解有效三角形的个数

Problem: 611. 有效三角形的个数 文章目录 题目分析讲解算法原理复杂度Code 题目分析 首先我们来分析一下本题的思路 看到题目中给出的示例 题目的意思很简单&#xff0c;就是将给到的数字去做一个组合&#xff0c;然后看看这三条边是否可以构成三角形。那判断的方法不用我说&a…...

mysql 计算两点之间距离

先说一下我们可能会用到的一些场景&#xff0c;这样同学们可以先评估&#xff0c;该篇文章是否对你有帮助&#xff01; 场景&#xff1a; 假设 美团&#xff0c;我点外卖时&#xff0c;系统会让我先进行定位&#xff0c;比如我定位在了 A 点&#xff0c;系统就会给我推荐&…...

c语言自定义头文件是什么情况下使用?一般在什么情况下引用自定义的头文件?一般在自定义头文件中写什么代码?

c语言自定义头文件是什么情况下使用&#xff1f;一般在什么情况下引用自定义的头文件&#xff1f;一般在自定义头文件中写什么代码&#xff1f; C语言自定义头文件是一种用来封装函数和变量声明的文件&#xff0c;它通常用于将一组相关的函数和变量的声明集中在一个地方&#…...

electron应用打包成功纪念一下

electron应用打包成功纪念一下&#xff0c;以前曾经行过后来打包各种报错&#xff0c;现在有空就尝试解决一下 首先安装nvm能够方便切换node版本 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash 顺利安装后你用nvm list查看node列表时会…...

远程办公中安全远程访问解决方案

什么是安全远程访问 安全的远程访问是一个至关重要的过程&#xff0c;可让您使用互联网从远处完全控制某人的设备。为了确保安全&#xff0c;为受保护的远程访问采取了额外的身份验证和加密措施。 为什么安全远程访问解决方案很重要 当 IT 技术人员从远处帮助人们解决计算机…...

StartUp启动框架-Android启动性能

简述 当谈论Android应用程序的启动性能时&#xff0c;StartUp启动框架是一个不可忽视的关键工具。它旨在优化应用程序的启动过程&#xff0c;确保用户在打开应用时能够迅速获得流畅、高效的体验。让我们来深入了解StartUp框架的作用和重要性&#xff0c;以及它是如何改善Andro…...

Positive Technologies:五分之四的网络攻击具有针对性

Positive Technologies 对 2023 年第二季度的相关网络威胁进行了分析。报告显示&#xff0c;自今年年初以来&#xff0c;有针对性的攻击数量增加了 10%&#xff0c;目前占 78%。专家们注意到利用漏洞的大规模攻击和大量用户个人数据的泄露。此外&#xff0c;在此期间&#xff0…...

clickhouse的另类表引擎

clickhouse常用的MergeTree引擎外&#xff0c;还有特殊的引擎 1&#xff0c;memory引擎&#xff0c;顾名思义&#xff0c;数据是存储在内存中&#xff0c;数据不会被压缩也不会倍格式化转换数据在内存中保存的形态与查询时看到的如出一辙&#xff0c;重启ck数据丢失 2&#xff…...

Uniapp新版本打包后覆盖安装,新增的页面无法跳转,需退出重新启动才可以打开的解决方案

最近写uniapp项目&#xff0c;发现一个坑&#xff0c;在新版本覆盖安装后直接打开APP&#xff0c;新增的页面竟然无法跳转&#xff0c;需要重新启动才可以正常打开&#xff0c;在网上查了很多方法&#xff0c;最终总结下来有以下几点&#xff1a; 1.看打的是debug包还是releas…...

系统架构设计高级技能 · 面向服务架构设计理论与实践

点击进入系列文章目录 系统架构设计高级技能 面向服务架构设计理论与实践 一、SOA的相关概念1.1SOA的定义1.2 业务流程与业务流程执行语言 二、SOA的发展史三、SOA与微服务的区别三、SOA的参考架构四、SOA的主要协议规范五、SOA的设计标准要求六、SOA的作用与设计原则七、SOA的…...

QT注册界面练习(信号与槽实现页面跳转)

一、注册界面练习思路以及具体代码 在完成注册页面搭建的前提下&#xff0c;通过信号与槽机制实现多组件之间的相互通信&#xff0c;实现页面跳转。 基本步骤&#xff1a; 首先&#xff0c;将注册页面的登录按钮与成功登陆信号绑定&#xff0c;当用户名与密码均匹配时&#xf…...

MySQL从入门到精通【进阶篇】之 主从复制详解

文章目录 0.前言1. 主从复制简介2. 主从复制的工作流程主从复制过程中的日志文件作用&#xff08;Binary Log&#xff09;和中继日志&#xff08;Relay Log&#xff09; 3. MySQL主从复制的配置4. 参考资料 0.前言 MySQL的主从复制和读写分离是数据库领域的基本概念&#xff0…...

vue使用qrcodejs2生成二维码

目录 概要 构建展示的vue组件qrcode.vue 组件的使用 概要 项目中用到需要展示二维码的样式&#xff0c;想到了qrcode 例如&#xff1a; 前提&#xff1a;安装包 npm install qrcodejs2 --save 构建展示的vue组件qrcode.vue <template><div style"width: …...

python注释

任何编程语言都少不了注释&#xff0c;Python也不例外&#xff0c;以下是Python注释的具体用法&#xff1a; 单行注释 Python编程语言的单行注释常以#开头&#xff0c;单行注释可以作为单独的一行放在被注释代码行之上&#xff0c;也可以放在语句或者表达式之后。 实例&…...

update-alternatives详解

1.功能作用 update-alternatives是dpkg的实用工具&#xff0c;用来维护系统命令的符号链接&#xff0c;以决定系统默认使用什么命令。 在Debian系统中&#xff0c;我们可能会同时安装有很多功能类似的程序和可选配置&#xff0c;如Web浏览器程序(firefox&#xff0c;konquero…...

JavaScript 编写更好的条件语句

在任何编程语言中&#xff0c;代码需要根据不同的条件在给定的输入中做不同的决定和执行相应的动作。 例如&#xff0c;在一个游戏中&#xff0c;如果玩家生命点为0&#xff0c;游戏结束。在天气应用中&#xff0c;如果在早上被查看&#xff0c;显示一个日出图片&#xff0c;如…...

聊聊PBE算法

序 本文主要研究一下PBE算法 PBE PBE即Password Based Encryption&#xff0c;基于口令的加密&#xff0c;它是一种组合算法&#xff0c;即一般是哈希对称算法&#xff0c;比如PBEWithMD5AndDES&#xff0c;就是用MD5做哈希&#xff0c;用DES做加解密&#xff0c;而其密钥则…...

用MFC打开外部程序

在MFC&#xff08;Microsoft Foundation Classes&#xff09;中&#xff0c;你可以使用ShellExecute函数来打开Notepad并加载指定的文件。ShellExecute函数是Windows API的一部分&#xff0c;它可以执行与操作系统相关的操作&#xff0c;例如打开文件、运行程序等。 以下是在M…...

基于全新电脑环境安装pytorch的GPU版本

前言&#xff1a; 距离第一次安装深度学习的GPU环境已经过去了4年多&#xff08;当时TensorFlow特别麻烦&#xff09;&#xff0c;现在发现安装pytorch的GPU版本还是很简单方便的&#xff0c;流程记录如下。 安装步骤&#xff1a; 步骤一&#xff1a;官网下载Anaconda Free…...

Excel怎么转PDF?2026年实用转换方法大盘点与官方转换指南

Excel 转 PDF 是日常办公中的常见需求。无论是要将数据表格转换为便于分享和打印的格式&#xff0c;还是需要生成最终报告&#xff0c;选择合适的转换方法能帮你节省时间。本文将为你盘点 Excel 转 PDF 的多种方法&#xff0c;从官方内置功能到在线工具再到专业转换小程序&…...

打卡信奥刷题(3295)用C++实现信奥题 P9027 [CCC 2021 S5] Math Homework

P9027 [CCC 2021 S5] Math Homework 题目描述 构造一个长度为 NNN 的整数序列 AAA&#xff0c;使得&#xff1a; ∀i1,2,⋯,N,1≤Ai≤109\forall i1,2,\cdots,N,1\leq A_i\leq 10^9∀i1,2,⋯,N,1≤Ai​≤109&#xff1b;∀i1,2,⋯,M,gcd⁡(AXi,AXi1,⋯,AYi)Zi\forall i1,2,\c…...

告别客户端安装!浏览器远程控制的终极方案:noVNC实战指南

告别客户端安装&#xff01;浏览器远程控制的终极方案&#xff1a;noVNC实战指南 【免费下载链接】noVNC VNC client web application 项目地址: https://gitcode.com/gh_mirrors/no/noVNC 还在为跨平台远程控制而烦恼吗&#xff1f;还在为每个设备都要安装专用客户端而…...

Windows RTMP流媒体服务器搭建完整指南:nginx-rtmp-win32终极教程

Windows RTMP流媒体服务器搭建完整指南&#xff1a;nginx-rtmp-win32终极教程 【免费下载链接】nginx-rtmp-win32 Nginx-rtmp-module Windows builds. 项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-win32 想要在Windows系统上快速搭建自己的RTMP直播服务器…...

BilibiliDown音频提取终极指南:3种方法从B站视频提取高质量音乐

BilibiliDown音频提取终极指南&#xff1a;3种方法从B站视频提取高质量音乐 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_…...

从CT扫描到AI模型:避开DICOM体位信息这个‘隐形坑’,提升医学影像分析准确率

从CT扫描到AI模型&#xff1a;避开DICOM体位信息这个‘隐形坑’&#xff0c;提升医学影像分析准确率 在医疗AI模型的开发过程中&#xff0c;数据预处理环节往往被工程师们视为"脏活累活"——既没有模型调参的成就感&#xff0c;也不如算法设计那样引人注目。然而&…...

为什么mob成为远程团队编程的首选工具?深度解析

为什么mob成为远程团队编程的首选工具&#xff1f;深度解析 【免费下载链接】mob Tool for smooth git handover. 项目地址: https://gitcode.com/gh_mirrors/mo/mob 在当今远程协作成为常态的时代&#xff0c;高效的团队编程工具变得至关重要。mob作为一款专为平滑Git交…...

终极指南:如何在Android设备上离线使用Zwift骑行模拟平台

终极指南&#xff1a;如何在Android设备上离线使用Zwift骑行模拟平台 【免费下载链接】zwift-offline Use Zwift offline 项目地址: https://gitcode.com/gh_mirrors/zw/zwift-offline 你是否曾梦想在无需网络连接的情况下享受专业的Zwift虚拟骑行体验&#xff1f;现在&…...

终极视频修复神器UNTRUNC:如何免费恢复损坏的MP4/MOV文件

终极视频修复神器UNTRUNC&#xff1a;如何免费恢复损坏的MP4/MOV文件 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 你是否…...

除了STM32,你的CubeMX项目还能一键迁移到哪些国产MCU?APM32F030实测与选型思考

STM32生态迁移实战&#xff1a;从CubeMX到国产MCU的全链路决策指南 当ST官方涨价函在技术群里刷屏时&#xff0c;我正用CubeMX给APM32F030生成工程模板。屏幕上的进度条流畅运行&#xff0c;就像三年前操作STM32F030时一样——这个细节突然让我意识到&#xff1a;国产MCU的兼容…...