python基础——正则表达式

2024-04-26 23:28

本文主要是介绍python基础——正则表达式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

📝前言:
这篇文章主要想讲解一下python中的正则表达式:
1,什么是正则表达式
2,re模块三匹配
3,元字符匹配
4,具体示例

🎬个人简介:努力学习ing
📋个人专栏:C语言入门基础以及python入门基础
🎀CSDN主页 愚润求学
🌄每日鸡汤:天生我材必有用,千金散尽还复来


文章目录

  • 一,什么是正则表达式
  • 二,re模块三匹配
    • 1,match()
    • 2,search()
    • 3,findall()
    • 4,总结
  • 三,元字符匹配
  • 1,单字符匹配
  • 2,数量匹配
  • 3,边界匹配
  • 四,具体示例
    • 例一
    • 例二
    • 例三

一,什么是正则表达式

正则表达式(Regular Expression)是一种用于处理字符串的强大工具,它可以用来检查字符串是否符合某种模式、提取字符串中的特定部分或者替换字符串中的某些内容。
比如在某些场景,我们在输入邮箱的时候,如果我们的输入不符合邮箱地址的规则,则会被提示错误输入。

二,re模块三匹配

下面是三种常用来匹配的函数

1,match()

match()函数用于从字符串的开头开始匹配正则表达式。(如果第一个字符就不匹配则直接返回None
如果匹配成功,返回一个匹配对象(包含匹配的信息);如果匹配失败,返回None

函数原型:

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

pattern: 匹配的正则表达式(匹配规则)
string: 要匹配的字符串
flags: 可选参数,用于控制匹配方式,如是否忽略大小写、是否多行匹配等。

示例:

import re
a = "hello world! hello world."
print(re.match('hello', a))

输出:
在这里插入图片描述
(这个span(0,5)是不包括5下标的)

2,search()

search()函数用于在字符串中搜索与正则表达式匹配的子字符串。如果找到匹配项,返回一个匹配对象;如果找不到匹配项,返回None

函数原型:

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

(参数与match()相同。)

示例:

import re
a = "hello world! hello world."
print(re.search('llo', a))

输出:
在这里插入图片描述

3,findall()

findall()函数用于在字符串中查找所有与正则表达式匹配的子字符串,并返回一个包含所有匹配项的列表。
函数原型:

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

(参数与match()search()相同。)

示例:

import re
a = "hello world! hello world."
print(re.findall('llo', a))

输出:
在这里插入图片描述

4,总结

match(): 从字符串的开头开始匹配,如果开头不匹配则返回None。匹配成功则返回第一个匹配项(包含信息),匹配失败则返回None
search(): 在字符串中搜索与正则表达式匹配的子字符串,返回第一个匹配项(包含信息),失败返回None
findall(): 在字符串中查找所有与正则表达式匹配的子字符串,并返回一个包含所有匹配项的列表,找不到则返回一个空列表。

三,元字符匹配

正则表达式的核心是用于构建模式的元字符。元字符是一些具有特殊含义的字符,可以用来匹配某一类字符。使用元字符构建一个模式,然后使用这个模式来处理字符串。

为了创建一个正则表达式,你通常需要在字符串前面添加一个r前缀。这个前缀告诉Python解释器这是一个原始字符串(raw string)

1,单字符匹配

在这里插入图片描述

2,数量匹配

在这里插入图片描述

如:\d*:匹配0个或者无数个数字
[0-9]+:匹配1个或者无数个0-9之间的数字)
[^0]:匹配除了0以外的所有字符
[^a-zA-Z]:匹配除了字母a-zA-Z以外的所有字符。(a-zA-Z之间最好不要加,
注意:{m,n}之间不要加逗号:a{1,2},b{1,3}【错误的】

3,边界匹配

在这里插入图片描述

^[0-9]+$:从头开始匹配到结尾,中间出现1个或无数个0-9之间的数字
():把()内要匹配的当一个整体来匹配
| :意思就是或,如:com|136|qq就是指这里匹配com或者136或者qq

四,具体示例

例一

匹配账号,只能由字母和数字组成,长度限制6到10位:

principle1 = r'^[0-9a-zA-Z]{6,10}$'

示例:

import re
principle1 = r'^[0-9a-zA-Z]{6,10}$'text1 = "2005abc"
text2 = "200504@abc"match_obj1, match_obj2 = re.match(principle1, text1), re.match(principle1, text2)print(f"text1匹配的结果是:{match_obj1}\ntext2匹配的结果是{match_obj2}")

输出结果:
在这里插入图片描述

例二

匹配QQ号,要求纯数字,长度5-11,第一位不为0:

principle2 = r'^[1-9][0-9]{4,10}$'

例三

匹配邮箱地址
要求:
1,邮箱地址的格式:用户名+@+域名
2,用户名是由数字、字母、_-组成
3,只允许qq、163、gmail这三种邮箱地址

提示:
126.com是域名,.edu.com也是域名……

答案:

principle3 = r'^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$'

[\w-]+ 表示出现a-z A-Z 0-9 _- 字符最少1个,最多不限
(\.[\w-]+)*,表示出现组合 .a-z A-Z 0-9 _ -的组合最少0次,最多不限
用于匹配如:abc.def@……
@表示匹配@符号
(qq|163|gmail)表示只匹配这3个邮箱提供商
(\.[\w-]+)+表示组合 .a-z A-Z 0-9 _ -的组合最少1次,最多不限
如:3369134@abc.def.com


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

这篇关于python基础——正则表达式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/938950

相关文章

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e