【python】网络爬虫与信息提取--正则表达式

news2025/1/20 5:47:56

一、正则表达式

        正则表达式是用来简洁表达一组字符串的表达式。是通用的字符串表达框架,简洁表达一组字符串的表达式,针对字符串表达“简洁”和“特征”思想的工具,判断某字符串的特征归属。

        用处:表达文本类型的特征;同时查找或替换一组字符串;匹配字符串的全部或部分。

        编译:将符合正则表达式语法的字符串转换成正则表达式特征。

        语法:正则表达式由字符和操作符构成。

        正则表达式的常用操作符:

        实例:

        

二、RE库的基本使用

        RE库是python的标准库,主要用于字符串的匹配。

        调用方法:import re

        RE库使用raw string类型来表达正则表达式,表示为:r'text',例如:r'[1-9]\d{5}';也使用string类型,但是由于string类型中将斜杠理解为转义符,所以会更加繁琐,例如:'[1-9]\\d{5}'。综上,当正则表达式包含转义符时使用raw string。

        re库的主要功能函数:

 re.search(pattern,string,flags=0)        

         pattern:正则表达式的字符串或原生字符串表示

        string:待匹配字符串

        flags:正则表达式使用时的控制标记

        例子:我们匹配的字符串是BIT100081

re.match(pattern,string,flags=0)

        pattern:正则表达式的字符串或原生字符串表示

        string:待匹配字符串

        flags:正则表达式使用时的控制标记

        仔细看下这个错误提示,NoneType这说明现在由match函数返回的变量match它并没有一个属性叫group,也就是说这个match是空的。我们知道,这边所用的正则表达式表示了一个中国区的邮政编码,而它从后边的string类型中,从起始位置开始匹配,但我们给出的string起始位置并不是邮政编码,因此它的正则表达式匹配结果应该是空。所以我们在使用之前一定要先判断这个match是不是空的。

re.findall(pattern,string,flags=0)

        pattern:正则表达式的字符串或原生字符串表示

        string:待匹配字符串

        flags:正则表达式使用时的控制标记

re.split(pattern,string,maxsplit=0,flags=0)

        pattern:正则表达式的字符串或原生字符串表示

        string:待匹配字符串

        maxsplit:最大分割数,剩余部分作为最后一个元素输出

        flags:正则表达式使用时的控制标记

        maxsplit=1表示只匹配第一个位置,匹配之后它将BIT分割出来

re.finditer(pattern,string,flags=0)

        pattern:正则表达式的字符串或原生字符串表示

        string:待匹配字符串

        flags:正则表达式使用时的控制标记

re.sub(pattern,repl,string,count=0,flags=0)

        pattern:正则表达式的字符串或原生字符串表示

        repl:替换匹配字符串的字符串

        string:待匹配字符串

        count:匹配的最大替换次数

        flags:正则表达式使用时的控制标记

 

RE库的另一种等价用法

        re.compile(pattern,flags=0):将正则表达式的字符串形式编译成正则表达式对象。pattern:正则表达式的字符串或原生字符串表示,flags:正则表达式使用时的控制标记。

三、RE库的match对象

        match对象就是一次匹配的结果,它包含了很多匹配的相关关系,

match对象的属性 

        只有经过compile的正则表达式才是真正的正则表达式,如果没经过,就是compile的一种表示。

四、Re库的贪婪匹配和最小匹配

        r'PY.*n'表示以PY字母开头,以N结尾,之间可以有若干个字母的字符串。

        贪婪匹配:RE库默认采用贪婪匹配,即输出匹配最长的子串。

        输出最短的子串:

        最小匹配操作符: 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1455229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

练习题解(关于最短路径)

目录 1.租用游艇 2.邮递员送信 3.【模板】单源最短路径(标准版) 1.租用游艇 P1359 租用游艇 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 输入数据: 3 5 15 7 因为这道题数据不大,所有我们直接使用Floyd 算法。 这道题大…

网络防御保护——防火墙综合实验

一.实验拓扑 二.实验要求 1.办公区设备可以通过电信和移动两条链路上网(多对多的nat,并且需要保留一个公网ip不能用来转换)。 2.分公司设备可以通过移动链路和电信链路访问到dmz区域的http服务器。 3.分公司内部客户端可以通过公网地址访问到内部服务器。 4.FW1和FW…

使用 cgroup 时踩过的坑

1 cgroup 介绍 1.1 cgroup 介绍 cgroup 全称 control group,控制组。通过 cgroup 可以限制应用使用的资源,资源包括 cpu、内存、磁盘 io、网络等。 工作中经常使用的 docker 容器就使用了 cgroup 进行资源限制和隔离,cgroup 是 docker 的基…

不坑盒子 助力高效办公的Office插件

不坑盒子简介 很多朋友在工作过程中需要对Word文档进行编辑处理,如果想让Word排版更有效率可以试试小编带来的这款不坑盒子软件,是一个非常好用的办公工具,拥有近百项功能的Word,wps插件,支持Office 2010以上的版本&a…

FLUENT Meshing Watertight Geometry工作流入门 - 9 生成体网格

本视频中学到的内容: 讨论体网格的重要性,并了解生成体网格的不同方法 了解体网格质量,以及如何改进 视频链接: FLUENT Meshing入门教程-9生成体网格_哔哩哔哩_bilibili 体网格生成是使用大量离散体积或单元来离散化/表示计算模…

网络模型及传输基本流程

1.OSI 七层模型 OSI ( Open System Interconnection ,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范; 把网络从逻辑上分为了 7 层 . 每一层都有相关、相对应的物理设备,比如路由器…

单片机学习笔记---AD模数转换DA数模转换

目录 AD模数转换 XPT2046.c XPT2046.h main.c DA数模转换 main.c 上一篇博客讲了AD/DA转换的工作原理,也介绍了运算放大器的工作原理,这节开始代码演示! AD模数转换 新创建一个工程:AD模数转换 第一个工程将用到LCD1602和…

入门者拿捏 Java 的必备小秘诀

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 我会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能…

将python flask项目打包成可以用运行的软件(包含报错解决)

将python flask项目打包成可以用运行的软件(包含报错解决) 准备好要打包的flask项目,如下图run.py文件的代码 导入打包函数库pyinstaller pip install pyinstaller执行打包指令,参数如下表所示 命令解释pyinstaller -F run.py…

安装部署k8s集群

系统: CentOS Linux release 7.9.2009 (Core) 准备3台主机 192.168.44.148k8s-master92.168.44.154k8s-worker01192.168.44.155k8s-worker02 3台主机准备工作 关闭防火墙和selinux systemctl disable firewalld --nowsetenforce 0sed -i s/SELINUXenforcing/SELI…

C++模板进阶操作 —— 非类型模板参数、模板的特化

C模板进阶 非类型模板参数模板的特化概念 函数模板特化类模板特化全特化 偏特化模板总结 非类型模板参数 模板参数可分为类型形参和非类型形参。 类型形参: 出现在模板参数列表中,跟在class或typename关键字之后的参数类型名称。 非类型形参&#xff1a…

基于springboot智慧外贸平台源码和论文

网络的广泛应用给生活带来了十分的便利。所以把智慧外贸管理与现在网络相结合,利用java技术建设智慧外贸平台,实现智慧外贸的信息化。则对于进一步提高智慧外贸管理发展,丰富智慧外贸管理经验能起到不少的促进作用。 智慧外贸平台能够通过互…

第三百五十三回

文章目录 1. 概念介绍2. 使用方法2.1 获取所有时区2.2 转换时区时间 3. 示例代码4. 内容总结 我们在上一章回中介绍了"分享一些好的Flutter站点"相关的内容,本章回中将介绍timezone包.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在…

基于Robei EDA--实现串口数据包接收

一、定义串口传输协议帧 控制字的数据大小为一字节,定义帧头为(0xFE 0xDF)帧尾为(0xEF) 模块框图 内模块:串口接收,output:8位data 串口命令:对单字节数据接收进行缓存…

问界M7卖爆了,只因这三点做得好!

文 | AUTO芯球 作者 | 雷歌 理想真是懵了个大圈! 2月第一周的新能源汽车销量榜单已经出来:理想7200台的销量,被华为问界9000辆的销量远远甩在身后。 要知道,1月第四周,理想还以8500辆领先问界的8300辆。 更绝的是&…

算法学习——LeetCode力扣二叉树篇4

算法学习——LeetCode力扣二叉树篇4 222. 完全二叉树的节点个数 222. 完全二叉树的节点个数 - 力扣(LeetCode) 描述 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中&#xf…

深入浅出熟悉OpenAI最新大作Sora文生视频大模型

蠢蠢欲动,惴惴不安,朋友们我又来了,这个春节真的过的是像过山车,Gemini1.5 PRO还没过劲,OpenAI又放大招,人类真的要认输了吗,让我忍不住想要再探究竟,到底是什么让文生视频发生了质的…

C语言—字符数组(3)

可能不是那么的完整,先凑合看吧,如果我学会如何修改以后,我慢慢回来修改的 1.编写程序实现对两个字符串的连接功能; 法一:不使用strcat函数,写程序直接实现,记得添加结束符,不然程序访问数组时候将变得不…

算法基础——单调栈,单调队列

目录 1.单调栈 例题:【模板】单调栈 例题:求和 2.单调队列 例题:滑动窗口 1.单调栈 例题:【模板】单调栈 可以想象出一个柱状图,值越大,这个柱子越高 以此题的样例为例: 第一个数为7,想…

.ma1x0勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

尊敬的读者: 数据安全问题备受关注。而勒索病毒是其中一种最为恶劣的威胁之一。其中,.ma1x0勒索病毒备受人们担忧,因其可将用户的数据文件加密,并要求支付赎金以解密文件。本文将介绍.ma1x0勒索病毒的特征、预防方法以及如何恢复…