python基础——正则表达式

news2024/10/6 6:40:04

📝前言:
这篇文章主要想讲解一下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.coloradmin.cn/o/1626383.html

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

相关文章

【C++】STL-vector的使用

目录 1、什么是vector? 2、vector的使用 2.1 vector的定义 ​编辑 2.2 遍历修改数据 2.3 迭代器 2.4 vector空间增长问题 2.5 vector的增删查改 3、迭代器失效 3.1 会引起其底层空间改变的操作,都有可能是迭代器失效 3.2 指定位置元素的删除操…

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

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

消费新纪元:揭秘消费增值模式,让你的每一分钱都“钱生钱”

你是否对传统消费方式有所不满,认为它只停留在物质层面的交换,缺乏更深层次的附加价值?那么,我要为你揭晓一种新颖的消费模式——消费增值,它将为你的消费观念带来全新的变革,让你的每一笔消费都充满无限可…

CLIP图生文

CLIP模型本身并不是图生文的,CLIP模型用来做图片和文本描述的匹配。 但它可以与其他技术结合使用来实现这一点,以下是两种常见的方法: CLIP作为文本灵感检索系统: 这种方法利用了 CLIP 在寻找图像和文本之间相似表示方面的优势。…

关于豆瓣电影数据抓取以及可视化

首先我们可以先了解以下网络爬虫的定义: 爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。它可以在互联网上自动抓取网页内容,将这些信息存储起来。爬虫可以抓取网站的所有网页,从而获取对于我们有价值的信…

跨界客户服务:拓展服务边界,创造更多价值

在日益激烈的市场竞争中,企业如何突破传统服务模式的限制,创造更多价值,已成为业界关注的焦点。跨界客户服务作为一种新兴服务模式,正逐渐受到企业的青睐。通过跨界合作,企业可以拓展服务边界,提供更加多元…

数据治理和数据管理 傻傻分不清楚?

互联网时代,数据,这一无形资产,已成为现代企业的核心竞争力。如何高效地管理和利用数据,成为企业关注的焦点。在这个过程中,数据治理(Data Governance)和数据管理(Data Management&a…

[SpringBoot] JWT令牌——登录校验

JWT(JSON Web Token)是一种用于在网络应用之间传递信息的开放标准(RFC 7519)。它由三部分组成:头部(header)、载荷(payload)和签名(signature)。J…

android 去除桌面谷歌搜索框

注: 本文只是博主学习记录分享,仅供参考。如有错误请指出来,谢谢! 一、问题描述 去除 android 系统桌面谷歌搜索栏,前后对比如下图: 系统版本:android12 平台:rk3568 二、…

DNS域名系统 | unbound

目录 DNS 命名空间和域名结构 DNS的命名空间的结构: 域名服务器的分类: ​编辑 DNS 资源记录 常见type: DNS报文结构 请求报文: 响应报文: 解析类型 递归查询 迭代查询 DNS劫持 DNS劫持方法: 防御措施 DNS服务部署…

【Java EE】 文件IO的使用以及流操作

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

C++:const成员和取地址操作符

目录 一、const成员 二、取地址及const取地址操作符重载 一、const成员 将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数 隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。 注&…

【JAVA】PO、VO、DAO、BO、DTO、POJO你分得清吗?

在Java开发中,PO、VO、DAO、BO、DTO、POJO这些词汇是比较常见的,每个术语都有其特定的含义和用途。下面是它们的具体区别: 名称简要概况用途和特定PO (Persistence Object) 持…

PDF 书签制作与调整 从可编辑、不可编辑 PDF 文档创建书签的方法

本文是对以前发表的旧文拆分,因为原文主题太多,过长,特另起一篇分述。 第一部分 由可编辑 PDF 文档创建书签 方法 1. Adobe Acrobat Pro autobookmark AutoBookmark 是一个可用于 Adobe Acrobat 自动生成书签的插件。 官方下载地址&…

手拉手安装Kafka2.13发送和消费消息

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 Kafka启动方式有Zookeeper和Kraft,两种方式只能选择其中一种启动,不能同时使用。 Kafka下载https://downloads.apache.org/kafka/3.7.0/kafka_2.…

静态链接lib库使用

lib库实际上分为两种,一种是静态链接lib库或者叫做静态lib库,另一种叫做动态链接库dll库的lib导入库或称为lib导入库。这两个库是不一样的,很多人都分不清楚,很容易混淆。 第一种是静态lib,包含了所有的代码实现的&am…

回归预测 | Matlab实现SSA-ESN基于麻雀搜索算法优化回声状态网络的多输入单输出回归预测

回归预测 | Matlab实现SSA-ESN基于麻雀搜索算法优化回声状态网络的多输入单输出回归预测 目录 回归预测 | Matlab实现SSA-ESN基于麻雀搜索算法优化回声状态网络的多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SSA-ESN基于麻雀搜索算法…

2024/4/26 C++day4

1在Complex类的基础上&#xff0c;完成^&#xff0c;>>&#xff0c;<<,~运算符的重载 #include <iostream> using namespace std; class Complex {int rel; //实部int vir; //虚部 public:Complex(){}Complex(int rel,int vir):rel(rel),vir(vir){}vo…

小程序中如何快速给分类添加商品

​快速在分类下面上传商品&#xff0c;并且能够设置商品顺序&#xff0c;关系到运营效率的高低。下面就具体介绍如何快速在某个分类下面设置商品。 一、在商品管理处&#xff0c;查询某个分类下面的商品。 进入小程序管理员后台->商品管理&#xff0c;点击分类输入框&…

【汇编语言】直接定址表

【汇编语言】直接定址表 文章目录 【汇编语言】直接定址表前言一、移位指令移位指令过程逻辑移位指令shl 和 shr 二、操作显存数据显示的原理显示缓冲区的结构显示信息的一种“直接”方式 三、描述内存单元的标号关于标号去了冒号的数据标号数据标号同时描述内存地址和单元长度…