十、正则表达式详解:掌握强大的文本处理工具(二)

文章目录

  • 🍀多字符匹配
  • 🍀匹配规则的代替
  • 🍀特殊的匹配
  • 🍀特殊的匹配plus
  • 🍀总结

🍀多字符匹配

  1. 星号(*):匹配0个或者多个字符
import retext = '111-222-333'
result = re.match('[\d]', text) # 没有*,匹配第一个
result1 = re.match('[\d]*', text)  # 有*,从起始位置开始,匹配0或者多次
result2 = re.match('[-\d]*', text)   # 有*,从起始位置开始,匹配0或者多次
result3 = re.match('[-]*', text)  # 有*,从起始位置开始,匹配0或者多次
print(result.group(),len(result.group()))
print(result1.group(),len(result1.group()))
print(result2.group(),len(result2.group()))
print(result3.group(),len(result3.group()))

运行结果如下
在这里插入图片描述

注意:匹配不出来,只不过是空,并不会报错


  1. 加号(+):匹配一个或者多个
text = 'Q111-222-333'
result = re.match('[Q\d]+', text)
result1 = re.match('[\d]+', text)
print(result.group(),len(result.group()))
print(result1.group(),len(result1.group()))

运行结果如下

在这里插入图片描述

注意:有+,对[]里的内容匹配一次或者多次(至少一次)、从起始位置开始

  1. 问号(?):匹配0个或者1个
text = 'Q111-222-333'
result = re.match('[Q\d]?', text)
result1 = re.match('[\d]?', text)
print(result.group(),len(result.group()))
print(result1.group(),len(result1.group()))

运行结果如下

在这里插入图片描述

注意:从起始位置开始,和*有一点相近

  1. {m}:匹配指定个数m
text = 'Q111-222-333'
result = re.match('[Q\d]{2}', text)
result1 = re.match('[Q\d]{5}', text)
print(result.group(),len(result.group()))
print(result1.group(1),len(result1.group()))

运行结果如下

在这里插入图片描述

注意:从起始位置

  1. {m,n}:匹配m到n个,默认匹配最多次
text = '111-222-333'
text1 = '111-2^22-333'
result = re.match('[-\d]{2,8}', text)
result1 = re.match('[-\d]{2,8}', text1)
print(result.group())
print(result1.group())

运行结果如下
在这里插入图片描述

注意:若内容存在不属于规则的内容,则停止,直接输出

🍀匹配规则的代替

  1. \d------[0-9]:匹配所有的数字
text = '111-222-333'
result = re.match('[-0-9]*', text)
print(result.group())

运行结果如下

在这里插入图片描述
注意:这里经常与(*)进行搭配,进而匹配多次数字

  1. \D----[^0-9]:匹配所有的非数字
text = '111-222-333'
result = re.match('[^0-9]+', text)
print(result.group())

运行结果如下

在这里插入图片描述

注意:这里经常配合+(1次或多次),匹配1次或多次非数字字符;其实也可以配合*(0次或多次),匹配0次或多次非数字字符

  1. \w-----[0-9a-zA-Z_]:匹配所有数字、字母、下划线
text = '111-222-333'
result = re.match('[0-9a-zA-Z_]+', text)
print(result.group())

运行结果如下
在这里插入图片描述
注意:减号不在匹配范围之内

  1. \W-----[^0-9a-zA-Z]:匹配所有非数字、字母和下划线
text = '111-222-333'
result = re.match('[^0-9a-zA-Z_]+', text)
print(result.group())

运行结果如下
在这里插入图片描述
注意:这里和之前那个有相似之处,主要是因为+,这里的+是匹配至少一次,然而一开始检索就没找到,自然报错了

  1. [\d\D]、[\w\W]:匹配所有的字符
text = '111-222-333'
result = re.match('[\w\W]+', text)
print(result.group())

运行结果如下
在这里插入图片描述

所以说还是这个牛吧


🍀特殊的匹配

例子如下:

text = '111-222-333'
text1 = '....111-222-333'
result = re.match('[.]+', text)
result1 = re.match('.+', text)
result2= re.match('[.]+', text1)
print(result1.group())
print('*')
print(result2.group())
print('*')
print(result.group())

运行结果如下
在这里插入图片描述
注意:去掉中括号后,点表示所有字符再配上+匹配所有字符,但是中括号加上点后代表的就是匹配点了,然而text1并没有,所有遵循+的规则至少一个,所以报错

感兴趣的小伙伴可以自己试着来,将手机号、邮箱、身份证号码的规则自己写出来


🍀特殊的匹配plus

  1. 全局遍历
text = 'Hello HeWord'
result = re.search('He', text)
print(result.group())

运行结果如下
在这里插入图片描述
注意:search()是从左到右进行字符串遍历,找到就返回,若后续再出现,也不再返回结果

  1. $:以某某为结尾
text = 'HelloHeWord@163.com'
result = re.search('[\w]+@[a-z0-9]+[.]com$', text)
print(result.group())

运行结果如下

在这里插入图片描述
注意:以com为结尾提取数据,若不是以该词结尾就会报错

  1. |:匹配多个表达式或者字符串
text = 'https://www.baidu.com'
result = re.search('[https|http]',text)
print(result.group())

运行结果如下
在这里插入图片描述

text = 'https://www.baidu.com'
result = re.search('[https|http]+',text)
print(result.group())

运行结果如下
在这里插入图片描述

text = 'https://www.baidu.com'
result = re.search('(https|http)',text)
print(result.group())

运行结果如下
在这里插入图片描述
综上所述:中括号是将里面看成一个字符串,小括号则以|为标准分层若干字符串

🍀总结

本节介绍了多字符匹配,其中包括星号、加号等;匹配规则的代替,例如\d可以使用[0-9]代替使用;以及特殊的匹配。下节介绍贪婪模式与非贪婪模式,曾有大佬说明,不了解贪婪模式和非贪婪模式,就无法进行爬虫

如果没看过正则表达式详解:掌握强大的文本处理工具(二)的小伙伴,可以看看,感谢支持!!!

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

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

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

相关文章

苹果的Apple GPT要来了?

据外媒消息,苹果正在内部开发类 ChatGPT 的产品,与微软、OpenAI、谷歌、Meta 等科技巨头在生成式 AI 赛道展开竞争。该消息使得苹果股价上涨了 2%。据苹果工程师透露,苹果在内部构建了代号为“Ajax”的大语言模型开发框架,并构建了…

Unity自定义后处理——Bloom效果

大家好,我是阿赵。   继续介绍屏幕后处理效果,这一期讲一下Bloom效果。 一、Bloom效果介绍 还是拿这个模型作为背景。 Bloom效果,就是一种全屏泛光的效果,让模型和特效有一种真的在发光的感觉。 根据参数不一样,可…

Packet Tracer – 实施静态 NAT 和动态 NAT

Packet Tracer – 实施静态 NAT 和动态 NAT 拓扑图 目标 第 1 部分:利用 PAT 配置动态 NAT 第 2 部分:配置静态 NAT 第 3 部分:验证 NAT 实施 第 1 部分: 利用 PAT 配置动态 NAT 步骤 1: 配置允许用于 NAT …

【基于CentOS 7 的iscsi服务】

目录 一、概述 1.简述 2.作用 3. iscsi 4.相关名称 二、使用步骤 - 构建iscsi服务 1.使用targetcli工具进入到iscsi服务器端管理界面 2.实现步骤 2.1 服务器端 2.2 客户端 2.2.1 安装软件 2.2.2 在认证文件中生成iqn编号 2.2.3 开启客户端服务 2.2.4 查找可用的i…

AJAX-day03-AJAX进阶

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 同步代码和异步代码 回调函数地狱 Promise - 链式调用 Promise 链式应用 async函数和await async函…

Stable Diffusion入门笔记(自用)

学习视频:20分钟搞懂Prompt与参数设置,你的AI绘画“咒语”学明白了吗? | 零基础入门Stable Diffusion保姆级新手教程 | Prompt关键词教学_哔哩哔哩_bilibili 1.图片提示词模板 2.权重(提示词) 无数字 (flower)//花的…

MQTT网关 5G物联网网关 PLC控制工业网关

MQTT网关,两个以上的节点之间通信的新型网关,网络节点之间通过互连来实现双向通信。支持PLC协议转MQTT,实现plc数据采集上云,物联网云平台对接,广泛应用于工业自动化plc远程监测控制。 计讯物联5G MQTT物联网网关TG463…

如何解决 Git 合并冲突

在遇到合并冲突时,请不要惊慌。通过一些娴熟的技巧协商,你可以解决任何冲突。 假设你和我正在共同编辑同一个名称为 index.html 的文件。我对文件进行了修改,进行了提交,并将更改推送到 Git 远程仓库。你也对同一个文件进行了修改…

酷雷曼无人机技能培训考试圆满举办

2023年7月18日、19日,以“向云端起航,让技术落地”为主题的酷雷曼无人机技能提升培训会在酷雷曼北京运营中心隆重举行,来自全国各地的众多合作商参加了本次培训,通过系统、全面的学习成功取得了专业无人机飞行员执照,为…

BEVDet 论文解读

BEVDet: High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View 作者单位 PhiGent Robotics 目的 2D 的视觉感知在过去的几年里有了急速的发展,涌现出一些优秀的范式工作,这些工作有较高的性能,可扩展性,以及多…

【数学建模】--典型相关分析

典型相关分析(Canonical Correlation analysis)研究两组变量(每组变量中都可能有多个指标)之间相关关系的一种多元统计方法。它能够揭示出两组变量之间的内在联系。 例子: 典型相关分析定义: 列题分析&…

OpenCV自带的HAAR级联分类器对脸部(人脸、猫脸等)的检测识别

在计算机视觉领域,检测人脸等是一种很常见且非常重要的应用,我们可以先通过开放计算机视觉库OpenCV来熟悉这个人脸识别领域。另外OpenCV关于颜色的识别,可以查阅:OpenCV的HSV颜色空间在无人车中颜色识别的应用HSV颜色识别的跟踪实…

苹果账号被禁用怎么办

转载:苹果账号被禁用怎么办 目录 禁用的原因 解除Apple ID禁用 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UKQ1ILhC-1689932607373)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw)]​编辑 …

fiddler抓取,Android真机测试

1.配置Fiddler抓取并解密HTTPS包 Fiddler默认是不抓取HTTPS包的,需要进行相应的配置。 打开Fiddler,选择“Tools->Fiddler Options...” 2.在弹出的对话框中选择“HTTPS”选项卡: 3.勾选“Capture HTTPS CONNECTs”,接着勾选…

第三天 运维高级 MySQL主从复制

1.理解MySQL主从复制原理 1、master(binlog dump thread)主要负责Master库中有数据更新的时候,会按照binlog格式,将更新的事件类型写入到主库的binlog文件中。 2、I/O thread线程在Slave中创建,该线程用于请求Master&…

uniapp 微信小程序 Picker下拉列表数据回显问题

效果图&#xff1a; 1、template <template><view class"items select-box"><view class"items-text">品牌型号</view><picker change"bindBrandType" :value"brandIndex" :range"brandList"…

HTTP 什么样的响应才会被缓存

下面来讨论什么样的响应会被缓存&#xff0c;以及使用好已经缓存好的条件是什么。 缓存分为两步&#xff0c;首先将响应缓存下来&#xff0c;第二步将要发起一个请求的时候检查当前缓存是否可以使用缓存了的响应。 (1) 请求方法可以被缓存理解&#xff08;不只于 GET 方法&…

17 界面布局--登录界面

要点&#xff1a; 利用widgets做布局&#xff1a;水平&#xff0c;垂直&#xff0c;栅格 利用弹簧设置收缩 widget宽高比实际控件大很多&#xff1a;设置Fixed 如果需要去除其余边框间隙可以设置layout 将最小尺寸和最大尺寸设置为固定即为固定尺寸 设置窗口标题&#xff1a;wi…

SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter

1. 自动配置流程 导入starter依赖导入autoconfigure寻找类路径下 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件启动&#xff0c;加载所有 自动配置类 xxxAutoConfiguration 给容器中配置功能组件组件参数绑定到 属性类中。xxxPrope…

前端技术Vue学习笔记--001

前端技术Vue学习笔记 文章目录 前端技术Vue学习笔记1、Vue2和Vue3比较2、Vue简介3、Vue快速上手4、插值表达式{{}}5、Vue响应式特性6、Vue指令6.1、v-html指令6.2、v-show指令和v-if指令6.3、v-else指令和v-else-if指令6.4、v-on指令6.4.1、v-on指令基础6.4.2、v-on调用传参 6.…