Python 正则表达式 *, + 和 ? 符号

Python 正则表达式 *, + 和 ? 符号

  • 引言
  • 正文
    • * 符号
    • + 符号
    • ? 符号

引言

这里简单说明一下 Python 正则表达式中的 *, +? 符号。

正文

* 符号

对它前面的正则式匹配 0 到任意次重复, 尽量多的匹配字符串。 ab* 会匹配 'a''ab',或者 'a' 后面跟随任意个 'b'

import restr1 = 'a'
print(re.search('ab*', str1))
str1 = 'ab'
print(re.search('ab*', str1))
str1 = 'abbbbbbbbbbbbbbbbb'
print(re.search('ab*', str1))
str1 = 'abbbbbbbbbbbbbbbbbccc'
print(re.search('ab*', str1))
"""
result:
<re.Match object; span=(0, 1), match='a'>
<re.Match object; span=(0, 2), match='ab'>
<re.Match object; span=(0, 18), match='abbbbbbbbbbbbbbbbb'>
<re.Match object; span=(0, 18), match='abbbbbbbbbbbbbbbbb'>
"""

上述的结果显而易见,当字符串为单个字符 a 时, ab? 会匹配到单个字符 a,当字符串为 ab 时,会匹配到 ab,当字符串为 abbbbbbbbbbbbbbbbb 时,会匹配到 abbbbbbbbbbbbbbbbb 。当字符串为 abbbbbbbbbbbbbbbbbccc 时,还是会匹配到 abbbbbbbbbbbbbbbbb。因此,我们说,* 符号类似于贪婪模式,会尽可能匹配到所有能够匹配到的字符。

+ 符号

对它前面的正则式匹配 1 到任意次重复。 ab+ 会匹配 a 后面跟随 1 个以上到任意个 b,它不会匹配 a

import restr1 = 'a'
print(re.search('ab+', str1))
str1 = 'ab'
print(re.search('ab+', str1))
str1 = 'abbbbbbbbbbbbbbbbb'
print(re.search('ab+', str1))
str1 = 'abbbbbbbbbbbbbbbbbccc'
print(re.search('ab+', str1))
"""
result:
None
<re.Match object; span=(0, 2), match='ab'>
<re.Match object; span=(0, 18), match='abbbbbbbbbbbbbbbbb'>
<re.Match object; span=(0, 18), match='abbbbbbbbbbbbbbbbb'>
"""

不同于贪婪匹配 ab*ab+ 对于单个字符 a,返回的是 None 结果。

? 符号

对它前面的正则式匹配 01 次重复。 ab? 会匹配 a 或者 ab

import restr1 = 'a'
print(re.search('ab?', str1))
str1 = 'ab'
print(re.search('ab?', str1))
str1 = 'abbbbbbbbbbbbbbbbb'
print(re.search('ab?', str1))
str1 = 'abbbbbbbbbbbbbbbbbccc'
print(re.search('ab?', str1))
"""
result:
<re.Match object; span=(0, 1), match='a'>
<re.Match object; span=(0, 2), match='ab'>
<re.Match object; span=(0, 2), match='ab'>
<re.Match object; span=(0, 2), match='ab'>
"""

结果显而易见,这里不做过多解释了。

如果大家觉得有用,就请点个赞吧~

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

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

相关文章

联发科技发布天玑9300+旗舰5G生成式AI芯片 | 最新快讯

5 月 7 日消息&#xff0c;联发科技今天举办了天玑开发者大会 2024。大会上&#xff0c;联发科技开启了“天玑 AI 先锋计划”&#xff0c;联合业界生态企业发布了《生成式 AI 手机产业白皮书》&#xff0c;分享了生成式 AI 端侧部署的解决方案“天玑 AI 开发套件”。同时&#…

大数据技术原理与技术简答

1、HDFS中名称节点的启动过程 名称节点在启动时&#xff0c;会将FsImage 的内容加载到内存当中&#xff0c;此时fsimage是上上次关机时的状态。然后执行 EditLog 文件中的各项操作&#xff0c;使内存中的元数据保持最新。接着创建一个新的FsImage 文件和一个空的 Editlog 文件…

程序员如何通过预售验证销量

通过预售验证销量 为什么要进行验证 我曾随机抽样调查了某在线课程平台上近500门付费课程&#xff08;通过搜索关键词“课”得出的数据&#xff09;&#xff0c;发现其中24%的课程销售量不足30套&#xff0c;更有10%的课程销量不超过1套。 这一数据来自于我对某课程平台的分析…

华为WATCH 4 系列,智慧体验新升级

一表在手&#xff0c;探索无限。华为 WATCH 4 系列支持弦月窗提醒&#xff0c;重要信息抬腕即见&#xff1b;听歌、导航、支付、刷门禁、控车……腕上轻松掌握&#xff0c;出行更高效。

【MySQL】MySQL 8.4.0 长期支持版(LTS)安装

就在2024年 “5.1” 节前&#xff0c;MySQL官方发布了8.4.0长期支持版&#xff08;LTS - Long Term Support&#xff09;。根据官方提供的文档&#xff0c;在本地虚拟机进行安装测试。 安装、配置和启动过程记录如下&#xff1a; 第一步&#xff0c;上传到安装包&#xff08;my…

西奥CHT-01软胶囊硬度测试仪:重塑行业标杆,引领硬度测试新纪元

西奥CHT-01软胶囊硬度测试仪&#xff1a;重塑行业标杆&#xff0c;引领硬度测试新纪元 在当今医药领域&#xff0c;软胶囊作为一种广泛应用的药品剂型&#xff0c;其品质的稳定性和安全性直接关系到患者的健康。而在确保软胶囊品质的各项指标中&#xff0c;硬度测试尤为关键。…

机试:老张和女儿一起玩芭比娃娃卡片游戏,老张希望女儿可以获得更多的卡片,老张只从重复的卡片中抽取一张留给自己,请帮助老张设计程序,输出女儿得到卡片列表

#include <iostream> #include <vector> #include <unordered_set> #include <sstream>using namespace std;string getCards(vector<int>& cards) {unordered_set<int> s; // 去重for (int i 0; i < cards.size(); i) {s.insert(…

SpringCloud中LoadBalancer负载均衡器配置

SpringCloud中LoadBalancer负载均衡器配置 依赖 <dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><g…

探索Spring中的StandardCharsets:字符编码的艺术与实践

1. 概述 在Java编程中&#xff0c;StandardCharsets是一个静态类&#xff0c;它提供了一组标准的字符集&#xff08;Charset&#xff09;常量&#xff0c;用于在字节和字符之间进行转换。虽然StandardCharsets并不直接属于Spring框架的一部分&#xff0c;但它在Spring和Java应…

[oeasy]python0016_在vim中直接运行python程序

回忆上次内容 上次 置换 esc 和 caps lock 任何操作 都可以在不移动 手腕的状态下完成了 每次都要 退出vim编辑器&#x1f634; 才能 在shell中 运行python程序有点麻烦 想要 不退出vim 直接在 vim应用 中运行 py程序可能吗&#xff1f;&#x1f914; 运行程序 以前都是 先退…

Unity 性能优化之UI和模型优化(九)

提示&#xff1a;仅供参考&#xff0c;有误之处&#xff0c;麻烦大佬指出&#xff0c;不胜感激&#xff01; 文章目录 前言一、选择UI二、UGUI的优化1.Raycast Target2.UI控件的重叠3.TextMeshPro 二、模型优化1.Model选项卡Mesh CompressionRead/Write Enabled设置Optimize Ga…

C语言怎样从/向数据⽂件读/写结构?

一、问题 从数据⽂件读结构或者向数据⽂件写结构&#xff0c;都可以很轻松地使⽤⽂件读写函数实现&#xff0c; 如使⽤ fwrite( ) 函数写⼀个结构&#xff0c;使⽤ fread( ) 函数读⼀个结构&#xff0c;但是这样读写出的⽂件却不能移植。怎么从/向数据⽂件读/写结构才能更好呢&…

MySQL分区与分片:深入解析原理与应用

在大数据和高并发的应用场景中&#xff0c;MySQL的单一表可能会遇到性能瓶颈或存储限制。为了解决这个问题&#xff0c;MySQL提供了分区&#xff08;Partitioning&#xff09;和分片&#xff08;Sharding&#xff09;两种技术。虽然它们的目的都是为了提升性能&#xff0c;但实…

【python数据分析基础】—pandas透视表和交叉表

目录 前言一、pivot_table 透视表二、crosstab 交叉表三、实际应用 前言 透视表是excel和其他数据分析软件中一种常见的数据汇总工具。它是根据一个或多个键对数据进行聚合&#xff0c;并根据行和列上的分组键将数据分配到各个矩形区域中。 一、pivot_table 透视表 pivot_tabl…

【MySQL】MySQL基本知识点

目录 1.SQL分类&#xff1a; 2.DDL-数据库操作 3.DDL-表操作-创建 4.DDL-表操作-查询 5.DDL-表操作-数据类型 6.DDL-表操作-修改 1.SQL分类&#xff1a; 2.DDL-数据库操作 3.DDL-表操作-创建 注意&#xff1a;里面的符号全部要切换为英文状态 4.DDL-表操作-查询 5.DDL…

车路云一体化简介

车路云一体化 车路云一体化融合控制系统&#xff08; System of Coordinated Control by Vehicle-Road-Cloud Integration&#xff0c;SCCVRCI&#xff09;&#xff0c;是利用新一代信息与通信技术&#xff0c; 将人、车、路、云的物理层、信息层、应用层连为一体&#xff0c;…

Linux网络编程(三)IO复用二 poll系统调用

二、poll系统调用 2.1、API poll系统调用和select类似&#xff0c;也是在指定时间内轮询一定数量的文件描述符&#xff0c;以测试其中是否有就绪者。 #include <poll.h>int poll(struct pollfd* fds, nfds_t nfds, int timeout);fds参数是一个pollfd结构类型的数组&am…

切实有效的提高VMWARE游戏性能-各版本通杀 vm17pro

这里的游戏性能&#xff0c;当然了&#xff0c;特别指出的是3D性能&#xff0c;毕竟现在2D也很少了。 因为平时没啥事&#xff0c;所以&#xff0c;无聊就跟朋友挂挂游戏&#xff0c;没事写点代码折腾下。所以&#xff0c;免不了跟VMWARE搭上边。走了很多的弯路&#xff0c;中…

使用动态种子的DGA:DNS流量中的意外行为

Akamai研究人员最近在域名系统&#xff08;DNS&#xff09;流量数据中观察到&#xff1a;使用动态种子的域名生成算法&#xff08;Domain Generation Algorithm&#xff0c;DGA&#xff09;的实际行为&#xff0c;与对算法进行逆向工程推测的预期行为之间存在一些差异。也就是说…

Android 系统启动流程源码分析

一、Init进程启动 是一个由内核启动的用户级进程。内核自行启动之后&#xff0c;就通过启动一个用户级程序init的方式&#xff0c;完成引导进程。 启动的代码init.c中的main函数执行过程&#xff1a;system\core\init.c中&#xff1a; 主要下面两个重要的过程&#xff1a; 1…