正则表达式(1)

在这里插入图片描述

文章目录

  • 专栏导读
  • 1、match
  • 2、匹配目标
  • 3、通用匹配
  • 4、常用匹配规则表格

专栏导读

✍ 作者简介:i阿极,CSDN 数据分析领域优质创作者,专注于分享python数据分析领域知识。

本文录入于《python网络爬虫实战教学》,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。
订阅后,可以阅读《python网络爬虫实战教学》中全部文章内容,包含python基础语法、数据结构和文件操作,科学计算,实现文件内容操作,实现数据可视化等等。
✍ 其他专栏:《数据分析案例》 ,《机器学习案例》

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

1、match

这里首先介绍第一个常用的匹配方法一一—match,向它传人要匹配的字符串以及正则表达式,就可以检测这个正则表达式是否和字符串相匹配。
match方法会尝试从字符串的起始位置开始匹配正则表达式,如果匹配,就返回匹配成功的结果;如果不匹配,就返回None。
实例如下:

import re
content = 'Hello 123 4567 World_This is a Regex Demo'
print(len(content))
result = re.match("^Hello\s\d\d\d\s\d{4}\s\w{10}", content)
print(result)
print(result.group())
print(result.span())

运行结果如下:

41
<re.Match object; span=(0, 25), match='Hello 123 4567 World_This'>
Hello 123 4567 World_This
(0, 25)

这个实例首先声明了一个字符串,其中包含英文字母、空白字符、数字等。接着写了一个正则表达式:
^Hello\s\d\d\d\s\d{4}\s\w{10}
用它来匹配声明的那个长字符串。开头的^表示匹配字符串的开头,也就是以Hello开头;然后\s表示匹配空白字符,用来匹配目标字符串里Hello后面的空格;\d表示匹配数字,3个\d用来匹配123;紧接着的1个\s表示匹配空格;目标字符串的后面还有4567,我们其实依然可以用4个\d来匹配,但是这么写比较烦琐,所以可以用\d后面跟{4}的形式代表匹配4次数字;后面又是1个空白字符,最后\w{10}则表示匹配10个字母及下划线。我们注意到,这里其实并没有把目标字符串匹配完,不过这样依然可以进行匹配,只是匹配结果短一点而已。

在match方法中,第一个参数是传人了正则表达式,第二个参数是传人了要匹配的字符串。将输出结果打印出来,可以看到结果是SRE_Match对象,证明匹配成功。
该对象包含两个方法:

group方法可以输出匹配到的内容,结果是Hello 123 4567 World_This,这恰好是正则表达式按照规
则匹配的内容;
span方法可以输出匹配的范围,结果是(0,25),这是匹配到的结果字符串在原字符串中的位置范围。

通过上面的例子,我们基本了解了如何在Python中使用正则表达式来匹配一段文字。

2、匹配目标

用match方法可以实现匹配,如果想从字符串中提取一部分内容,该怎么办呢?就像上一节的实例一样,从一段文本中提取出E-mail地址或电话号码。

可以使用括号()将想提取的子字符串括起来。()实际上标记了一个子表达式的开始和结束位置,被标记的每个子表达式依次对应每个分组,调用group方法传入分组的索引即可获取提取结果。

实例如下:

import re
content = 'Hello 1234567 World_This is a Regex Demo'
result= re.match('^Hello\s(\d+)\sWorld',content)
print(result)
print(result.group())
print(result.group(1))
print(result.span())

运行结果如下:

<re.Match object; span=(0, 19), match='Hello 1234567 World'>
Hello 1234567 World
1234567
(0, 19)

可以看到,我们成功得到了1234567。这里用的是group(1),它与group()有所不同,后者会输出完整的匹配结果,前者会输出第一个被()包围的匹配结果。假如正则表达式后面还有用()包围的内容,那么可以依次用group(2)、group(3)等获取。

3、通用匹配

刚才我们写的正则表达式其实比较复杂,只要出现空白字符就需要写Is匹配,出现数字就需要写\d匹配,这样的工作量非常大。其实完全没必要这么做,因为还有一个万能匹配可以用,就是.*。
其中,可以匹配任意字符(除换行符),*代表匹配前面的字符无限次,所以它们组合在一起就可以匹配任意字符了。有了它,我们就不用个字符进行匹配了。

接着上面的例子,我们利用.*改写一下正则表达式:

import re
content = 'Hello 123 4567 World_This is a Regex Demo'
result = re.match("^Hello.*Demo$", content)  
print(result)
print(result.group())
print(result.span())

这里我们直接省略中间部分,全部用,*来代替,并在最后加一个结尾字符串。

运行结果如下:

<re.Match object; span=(0, 41), match='Hello 123 4567 World_This is a Regex Demo'>
Hello 123 4567 World_This is a Regex Demo
(0, 41)

可以看到,group方法输出了匹配的全部字符串,也就是说我们写的正则表达式匹配到了目标字符串的全部内容;span方法输出(0,41),这是整个字符串的长度。

因此,使用.*能够简化正则表达式的书写。

4、常用匹配规则表格

在这里插入图片描述

📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端调试工具之Chrome Elements、Network、Sources、TimeLine调试

常用的调试工具有Chrome浏览器的调试工具&#xff0c;火狐浏览器的Firebug插件调试工具&#xff0c;IE的开发人员工具等。它们的功能与使用方法大致相似。Chrome浏览器简洁快速&#xff0c;功能强大这里主要介绍Chrome浏览器的调试工具。 打开 Google Chrome 浏览器&#xff0c…

Java多线程实战-从零手搓一个简易线程池(三)线程工厂,核心线程与非核心线程逻辑实现

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

SWM341系列应用(上位机应用)

SWM341系列之上位机应用 1、分级图像和PNG、JPG的应用 现象&#xff1a;客户使用SWM34SVET6HMI_0.4.1版本上位机进行UI界面布局&#xff0c;反馈在模拟运行时&#xff08;PC端&#xff09;流畅&#xff0c;在Demo平台&#xff08;设备端&#xff09;运行卡顿。 分析及解决&…

基于SpringBoot+微信小程序的图书借阅管理系统(包运行调试)

介绍 系统介绍 是一套图书借阅管理系统&#xff0c;包括用户小程序以及后台管理系统。 前台商城系统包含用户注册登录、首页门户、图书查询、在线借阅、个人中心、我的信息、我的借阅、押金充值。 后台管理系统包含统计分析、用户管理、分类管理、图书管理、借阅管理、管理员…

Unknown redis exception; event execu tor terminated;解决

最近查看服务器日记是不是报发现有台服务器报错&#xff1a; rocessing failed; nested exception is org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: event execu …

升降梯人数识别摄像机

升降梯人数识别摄像机是一种智能监测设备&#xff0c;主要用于实时识别和计算升降梯内乘客的数量。通过搭载先进的图像识别技术和人工智能算法&#xff0c;该设备可以准确监测乘客进出数量&#xff0c;提供重要数据支持和信息反馈&#xff0c;帮助管理人员有效管理升降梯运行&a…

经久耐用耐强腐蚀PFA材质气体洗涤瓶全氟烷氧基树脂尾气吸收瓶

PFA洗气瓶是一种常用于净化和干燥各种气体的实验室器皿&#xff0c;以去除其中的水分、油脂、颗粒物等杂质&#xff0c;从而使需要用到的气体满足实验要求。 PFA气体吸收瓶 PFA洗气瓶的工作原理&#xff1a; 主要是通过液体吸收、溶解或发生化学反应来去除气体中的杂质。在洗气…

【软件工程】详细设计(二)

这里是详细设计文档的第二部分。前一部分点这里 4. 学生端模块详细设计 学生端模块主要由几个组件构成&#xff1a;学生登录界面&#xff0c;成绩查询界面等界面。因为学生端的功能相对来说比较单一&#xff0c;因此这里只给出两个最重要的功能。 图4.1 学生端模块流程图 4.…

牛客网BC-71 三角形判断(操作符注意事项)

例题如下 这道题的编程很容易实现&#xff0c;但恰恰因为太简单导致容易忘记注意事项 代码如下 #include<stdio.h> int main() {int a 0,b 0,c 0;while(scanf("%d%d%d",&a,&b,&c)!EOF){if(ab>c&&ac>b&&bc>a){ //三…

零基础如何自学人工智能?推荐优秀的学习路径及方法

人工智能&#xff08;AI&#xff09;是一个广泛且复杂的领域&#xff0c;自学AI可能是一项艰巨的任务&#xff0c;但只要有兴趣和决心&#xff0c;这绝对是可能的。以下是一个零基础自学人工智能的学习路径&#xff0c;旨在帮助那些只有兴趣&#xff0c;但缺乏背景知识的人。 *…

C语言第三十九弹---预处理(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 预处理 1、预定义符号 2、#define定义常量 3、#define定义宏 4、带有副作用的宏参数 5、宏替换的规则 6、宏和函数的对比 总结 在C语言中&#xff0c;预处…

宝塔面板docker管理器安装后,返回docker菜单页,提示当前未安装docker或docker-compose 未安装,再次安装后,依然提示未安装。

宝塔面板docker管理器安装后&#xff0c;返回docker菜单页&#xff0c;提示当前未安装docker或docker-compose 未安装&#xff0c;再次安装后&#xff0c;依然提示未安装。 OS: debian 11 BT: 7.9.8 解答&#xff1a; 您好&#xff0c;服务器终端执行以下命令截图看一下命令…

企业微信企业主体变更认证介绍

企业微信变更主体有什么作用&#xff1f; 说一个自己亲身经历的事情&#xff0c;当时我在一家教育公司做运营&#xff0c;公司所有客户都是通过企业微信对接的。后来行业整顿&#xff0c;公司不得不注销&#xff0c;换了营业执照打算做技能培训&#xff0c;但发现注销后原来的企…

前段之JavaScript——网页的血液!!

目录 一、JavaScript简介 二、JavaScript引入 三、声明变量 四、数据类型 五、运算符 六、函数 七、常用数据操作方法 1、字符串 2、数组 3、对象 八、BOM 九、DOM 一、JavaScript简介 JavaScript是一种用于为网页添加交互功能的脚本语言。它是一种轻量级的、解释…

氟化氢冷凝装置配套PFA烧瓶PFA冷凝管PFA接收瓶等

一、装置清单及说明&#xff1a; 1. PFA烧瓶 材质为PFA&#xff0c;半透明&#xff0c;耐受强酸强碱&#xff0c;常用500ml 1000ml&#xff0c;其他规格等可自行选择&#xff0c;若需要3颈及以上建议选择500ml以上规格&#xff0c;可根据要求选择有液位计&#xff0c;可看出瓶…

3D人脸扫描技术与数字人深度定制服务:赋能打造超写实3D数字分身

在数字时代&#xff0c;3D数字分身有着广泛的应用场景&#xff0c;在动画视频、广告宣传片、大型活动主持人、AI交互数字人等领域&#xff0c;发挥着重要的商业价值。其中&#xff0c;3D人脸扫描技术&#xff0c;推动了超写实3D数字分身的诞生。 公司案例 2023海心沙元宇宙音乐…

酒吧酒馆微信小程序设计基于Java,SpringBoot,Vue和UniApp

摘要 该设计目标是创建一个集成了Java, SpringBoot, Vue和UniApp技术的酒吧微信小程序&#xff0c;为用户提供一个功能全面、操作便捷的服务体验。通过利用SpringBoot的高效微服务架构&#xff0c;后端能够快速处理用户请求&#xff0c;实现酒品浏览、订单管理等核心功能&…

大话设计模式之外观模式

外观模式&#xff08;Facade Pattern&#xff09;是一种软件设计模式&#xff0c;旨在提供一个简单的接口&#xff0c;隐藏系统复杂性&#xff0c;使得客户端能够更容易地使用系统。这种模式属于结构型模式&#xff0c;它通过为多个子系统提供一个统一的接口&#xff0c;简化了…

华为OD机试 - 最大社交距离(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

央视315推荐的护眼灯有哪些?护眼灯十大品牌推荐

台灯作为家居类不可或缺的一种照明灯具&#xff0c;在我们的日常生活中发挥着重要作用&#xff0c;尤其是对于经常需要在夜晚长时间用眼学习的孩子而言&#xff0c;能够提供充足、明亮的照明&#xff0c;对学习帮助是非常大的。然而台灯的选择也是有讲究的&#xff0c;市面上很…