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


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

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

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

相关文章

什么是用户体验(UX)文案,为什么它很重要?

网上购物如今比以往任何时候都更加相关。所以我们将以此为例说明什么是用户体验(UX)文案,以及为什么它很重要。 假设你去了一个在线商店。你需要执行一系列操作: 找到合适的部分选择你感兴趣的产品弄清楚它们是什么,…

屌爆了,国产智能体的爆发性增长:一周数据揭秘

前言 自从4.19接入国内智能体 探索国产智能体:从GPTs使用热潮到本土模型的崛起 截止到今天(4.26),仅仅一周时间,数据太让我意外了,这篇文章就来总结一下! 这一次,我为国产智能体崛起,代言!!! 惊…

软件设计师-重点的创建型设计模式

一、简单工厂: 简单工厂模式属于创建型模式,但不属于23种设计模式之一。 软考中图 二、工厂方法: 意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 结…

自动驾驶传感器篇: GNSSIMU组合导航

自动驾驶传感器篇: GNSS&IMU组合导航 1.GNSS1.1 GNSS 系统概述1.2 GNSS系统基本组成1. 空间部分(Space Segment):2. 地面控制部分(Ground Control Segment):3. 用户设备部分(Use…

ElasticSearch 安装(docker)

下载安装包 阿里云链接: elasticSearch.exe https://www.alipan.com/s/3A356NnmWaJ 提取码: 93da 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。 安装步骤 1、首先…

使用 Docker 部署 TailChat 开源即时通讯平台

1)介绍 TailChat 官网: https://tailchat.msgbyte.com/ 作者:https://www.moonrailgun.com/about/ GitHub : https://github.com/msgbyte/tailchat TailChat 是一款插件化易拓展的开源 IM 应用。可拓展架构赋予 Tailchat 无限可能…

【C语言必刷题】7. 百钱百鸡

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…

【Linux】如何进行用户之间的切换——指令su

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

019基于JavaWeb的在线音乐系统(含论文)

019基于JavaWeb的在线音乐系统(含论文) 开发环境: Jdk7(8)Tomcat7(8)MysqlIntelliJ IDEA(Eclipse) 数据库: MySQL 技术: JavaServletJqueryJavaScriptAjaxJSPBootstrap 适用于: 课程设计,毕…

基于51单片机的天然气检测报警设计

基于51单片机的天然气检测报警 (仿真+程序原理图+设计报告) 功能介绍 具体功能: 1.MQ-5检测煤气浓度; 2.浓度分为低、中、高三档,分别用LED灯绿、黄、红来提示; 3.当浓度到达中档…

每日一题(力扣45):跳跃游戏2--贪心

由于题目已经告诉了我们一定可以跳到,所以我们只需去考虑前进最快的方法。即 判断当前下一步能跳的各个位置中,哪个能带你去去向最远的地方(why? 因为其他位置所能提供的最大范围都没最远那个大,所以最远的那个已经可以…

杰发科技AC7840——ADC简介(1)_双路ADC同时使用

0. 简介 1. 特性 2. 双路ADC Sample里面没有双路的,以为那个规则组只有一个通道,看了外设寄存器才发现,原来他的通道是双路的。 注意1: ADC硬件引脚的配置 注意2: 规则组长度设置和 RSEQ序列号和CH通道号组合应该就对应了转换顺序&#xff0…