Python基础(九)——正则表达式

news2024/9/19 23:43:26

6.正则表达式

(1)基础匹配

使用re模块

  • match方法:

re.match(匹配规则,被匹配字符串)

从被匹配字符串开头进行匹配,成功则返回匹配对象包含的信息,失败则返回None。

s = "today is a beautiful day"
result = re.match("today", s)
print(result)
"""
输出:
<re.Match object; span=(0, 5), match='today'>
"""
s = "today is a beautiful day"
result = re.match("day", s)
print(result)
"""
输出:
None
"""
  • search方法:

re.search(匹配规则,被匹配字符串)

从前向后搜索整个字符串,找到第一个匹配的字符串后停止。成功则返回匹配对象包含的信息,失败则返回None。

b = "Happy Mid-Autumn Festival,tumn"
result2 = re.search("tumn", b)
print(result2)
"""
输出:
<re.Match object; span=(12, 16), match='tumn'>
"""

  • findall方法:

re.findall(匹配规则,被匹配字符串)

搜索匹配整个字符串,找出全部匹配项,找不到则返回空list[]

b = "Happy Mid-Autumn Festival, tumn"
result2 = re.search("tumn", b)
print(result2)

result3 = re.findall("tumn", b)
print(result3)
"""
输出:
<re.Match object; span=(12, 16), match='tumn'>
['tumn', 'tumn']
"""
(2) 元字符匹配

【在正则中,代码不需要Python规范格式的空格】

代码功能
单字符匹配
.匹配任意1个字符,除了\n、.匹配点本身
[]匹配[]中例举的字符
\d匹配数字0-9
\D匹配非数字
\s匹配空白、空格、tab键
\S匹配非空白
\w匹配单词字符,a-z、A-Z、0-9,_
\W匹配非单词字符
数量匹配
*匹配前一个规则的字符出现0到无数次
+匹配前一个规则的字符出现1到无数次
?匹配前一个规则的字符出现0或1次
{m}匹配前一个规则的字符出现m次
{m,}匹配前一个规则的字符最少出现m次
{m,n}匹配前一个规则的字符出现m到n次
边界匹配
^匹配字符串开头
$匹配字符串结尾
\b匹配一个单词的边界
\B匹配非单词边界
分组匹配
|匹配左右任意一个表达式
()将括号中字符作为一个分组
a = "20240917.@qq.com!!!"
# r标记表示字符串中转义字符无效,为普通字符
result4 = re.findall(r'\W', a)
result5 = re.findall(r'[a-zA-Z]', a)
result6 = re.findall(r'[abcdqq]', a)

print(result4)
print(result5)
print(result6)
"""
输出:
['.', '@', '.', '!', '!', '!']
['q', 'q', 'c', 'o', 'm']
['q', 'q', 'c']
"""

# 匹配账号,只能由字母和数字组成,长度限制6到10位
r = '^0-9a-zA-Z{6,10}$'
s = '25778&'
print(re.findall(r, s))

# 匹配QQ号,纯数字,长度5-11位,第一位不为0
m = '^[1-9][0-9]{4,10}$'
n = '012345855'
print(re.findall(m, n))

# 匹配邮箱地址,只允许qq、163、gmail三种类型邮箱
q = '(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$)'

# 对于findall方法判断正则表达式时,如果有()分组,则会将每个分组的结果列出,可以使用()将整个表达式作为一组
# abc.qwe.asd@qq.com

记录学习心得的笔记,欢迎大家一起讨论,会持续更新

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

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

相关文章

从工厂打螺丝到数据库专家(上)

可能是年纪大了&#xff0c;近期总是失眠&#xff01;不知为何&#xff0c;这段时间心情烦躁时&#xff0c;特别喜欢听老歌&#xff0c;难道这是中年人的通病&#xff1a;都喜欢怀旧&#xff1f; 在数据库恢复订阅伙伴群&#xff0c;大家经常讨论&#xff0c;总是在回味过去&a…

文心一言 VS 讯飞星火 VS chatgpt (350)-- 算法导论24.1 1题

一、在图 24-4上运行Bellman-Ford算法&#xff0c;使用结点 z z z作为源结点。在每一遍松弛过程中&#xff0c;以图中相同的次序对每条边进行松弛&#xff0c;给出每遍松弛操作后的 d d d值和 π π π值。然后&#xff0c;把边 ( z , x ) (z,x) (z,x)的权重改为 4 4 4&#xf…

面试官:什么是CAS?存在什么问题?

大家好&#xff0c;我是大明哥&#xff0c;一个专注「死磕 Java」系列创作的硬核程序员。 回答 CAS&#xff0c;Compare And Swap&#xff0c;即比较并交换&#xff0c;它一种无锁编程技术的核心机制。其工作方式分为两步&#xff1a; 比较&#xff1a;它首先会比较内存中的某…

汉字转拼音工具类

一&#xff0c;汉字转成拼音大写首字母 public static String chineseToPinyin(String chinese) {//创建一个 StringBuilder 对象用于存储转换后的拼音。StringBuilder pinyin new StringBuilder();//创建一个汉语拼音输出格式对象。HanyuPinyinOutputFormat format new Han…

Redis-01 入门和十大数据类型

Redis支持两种持久化方式&#xff1a;RDB持久化和AOF持久化。 1.RDB持久化是将Redis的数据以快照的形式保存在磁盘上&#xff0c;可以手动触发或通过配置文件设置定时触发。RDB保存的是Redis在某个时间点上的数据快照&#xff0c;可以通过恢复RDB文件来恢复数据。 2.AOF持久化…

MySQL 中的 EXPLAIN 命令:洞察查询性能的利器

《MySQL 中的 EXPLAIN 命令&#xff1a;洞察查询性能的利器》 在 MySQL 数据库的使用中&#xff0c;优化查询性能是至关重要的一项任务。而 EXPLAIN 命令就是我们用来深入了解查询执行计划的强大工具。今天&#xff0c;我们就来一起探讨如何在 MySQL 中使用 EXPLAIN 命令&…

数据结构-3.2.栈的顺序存储实现

一.顺序栈的定义&#xff1a;top指针指向栈顶元素 1.图解&#xff1a; 2.代码&#xff1a; #include<stdio.h> #define MaxSize 10 //定义栈最多存入的元素个数 ​ typedef struct {int data[MaxSize]; //静态数组存放栈中元素int top; //栈顶指针 } SqStack; ​ int…

python mysql pymysql 数据库操作,常用脚本,个人小工具

起因&#xff0c; 目的: 整理 mysql 工具 启动数据库 检查服务器是否启动了: Get-Service -Name ‘mysql*’ 如果没启动的话&#xff0c;那么就启动: net start MySQL80 (最好是开启管理员权限) 1, 日常最常用的&#xff0c;创建连接 --> 查看所有数据库 —> 查看所有…

预处理、makefile、静动态库编写、nfs挂载、快捷命令

c查看预处理后的文件 查看执行后的汇编代码 预处理过程 静态库和动态库 静态库编写 实践 a 动态库生成 查找文件命令 动态库升级 链接的库找不到 命名要为linfun.so 执行时-lfun才能找到 系统会将lfun补充成libfun查找&#xff08;系统默认路径/user/lib/...&#xff09; 链…

C++:string 类详解

目录 简介 使用 初始化(构造函数、拷贝构造函数) 析构函数 赋值运算符重载(operator) 成员常量(npos) 运算符重载[ ](operator[ ]) size() 和 length() 迭代器( begin() 和 end() ) 范围 for 迭代器和范围 for 的比较 反向迭代器( rbegin() 和 rend() ) const 迭…

每日刷题(算法)

我们N个真是太厉害了 思路&#xff1a; 我们先给数组排序&#xff0c;如果最小的元素不为1&#xff0c;那么肯定是吹牛的&#xff0c;我们拿一个变量记录前缀和&#xff0c;如果当前元素大于它前面所有元素的和1&#xff0c;那么sum1是不能到达的值。 代码&#xff1a; #def…

elasticsearch实战应用

Elasticsearch(ES)是一种基于分布式存储的搜索和分析引擎&#xff0c;目前在许多场景得到了广泛使用&#xff0c;比如维基百科和github的检索&#xff0c;使用的就是ES。本文总结了一些使用心得体会&#xff0c;希望对大家有所帮助。 一、技术选型 说到全文搜索大家肯定会想到…

软件测试 BUG 篇

目录 一、软件测试的生命周期 二、BUG 1. bug的概念 2. 描述bug的要素 3. bug的级别 4. bug的生命周期 5. 与开发产生争执怎么办&#xff1f;&#xff08;面试高频考题&#xff09; 5.1 先检查自身&#xff0c;是否bug描述不清楚 5.2 站在用户角度考虑并抛出问题 5.3 …

[vue2+axios]下载文件+文件下载为乱码

export function downloadKnowledage(parameter) {return axios({url: /knowledage/download,method: GET,params: parameter,responseType: blob}) }添加 responseType: blob’解决以下乱码现象 使用触发a标签下载文件 downloadKnowledage(data).then((res) > {let link …

PHP及Java等其他语言转Go时选择GoFly快速快速开发框架指南

概要 经过一年多的发展GoFly快速开发框架已被一千多家科技企业或开发者用于项目开发&#xff0c;他的简单易学得到其他语言转Go首选框架。且企业版的发展为GoFly社区提供资金&#xff0c;这使得GoFly快速框架得到良好的发展&#xff0c;GoFly技术团队加大投入反哺科技企业和开…

模版进阶(template)

1.非类型模版参数 模版参数分类类型形参与非类型形参。 ① 类型形参&#xff1a;出现在在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 ② 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当…

Java键盘输入语句

编程输入语句 1.介绍:在编程中&#xff0c;需要接受用户输入的数据&#xff0c;就可以使用键盘输入语句来获取。 2.步骤&#xff1a; 1&#xff09;导入该类的所在包&#xff0c;java.util.* 2)创建该类对象&#xff08;声明变量&#xff09; 3&#xff09;调用里面的功能 3…

[2025]医院健康陪诊系统(源码+定制+服务)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

计算机毕业设计 奖学金评定管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

MySQL ------- 索引(B树B+树)

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯&#xff0c;希望本文内容能帮到你&#xff01;你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 目录 一&#xff1a;索引的特点 二&#xff1a;索引适用的场景 三&#xff1a;MySQL中索引操作 1&#xff1a;…