34.正则表达式

news/2024/12/25 1:59:58/

python正则表达式,使用re模块,模块中三个基础方法来做正则匹配。

match

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

从字符串开头进行匹配,匹配成功返回匹配对象(包含匹配的信息),匹配不成功返回空。

注意只会匹配开头,如果开头不匹配就直接返回None了。

python">import re
aa = "python is a good language, I am learning python"
res = re.match("python", aa)
# <_sre.SRE_Match object; span=(0, 6), match='python'>
print(res)
# (0, 6) 匹配到字符串的下标
print(res.span())
# python
print(res.group())bb = "1python is a good language, I am learning python"
ress = re.match("python", bb)
# None  match方法只是匹配开头,如果一开始就不匹配就直接返回None,不会继续后续匹配
print(ress)

search

搜索整个字符串,找出匹配的。找到第一个后就停止,不会继续向后。

整个字符串都找不到,返回None。

python">import re
aa = "java is a good language, I am learning python"
res = re.search("python", aa)
# <_sre.SRE_Match object; span=(39, 45), match='python'>
print(res)
# (39, 45)
print(res.span())
# python
print(res.group())

findall

匹配整个字符串,找出全部匹配项。

找不到就会返回一个[] 空list。

python">import re
aa = "python is a good language, I am learning python"
res = re.findall("python", aa)
# ['python', 'python']
print(res)

元字符匹配

python">import re
aa = "tallor@@python2!!666##itaa3"
# 字符串r标记,表示当前字符串是原始字符串,即内部的转义字符无效,而是普通字符
res = re.findall(r'\d', aa)
# ['2', '6', '6', '6', '3']
print(res)
# 找出所有的特殊字符
res = re.findall(r'\W', aa)
# ['@', '@', '!', '!', '#', '#']
print(res)
# 找出所有的字母
res = re.findall(r'[a-zA-Z]', aa)
# ['t', 'a', 'l', 'l', 'o', 'r', 'p', 'y', 't', 'h', 'o', 'n', 'i', 't', 'a', 'a']
print(res)

 案例:匹配只能有数字和字母组成,长度限制6-10位

python">import re
r = "^[0-9a-zA-Z]{6,10}$"
s = '123456'
# ['123456']
print(re.findall(r, s))

这里特别注意:r 正则表达式不能有空格。不然匹配会失败。

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

python">import re
r = "^[1-9]\d{4,10}$"
s = '123456'
# ['123456']
print(re.findall(r, s))

案例:邮箱验证

python">import re
r = "^([\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+)$"
s = 'aa@qq.comx'
# [('aa@qq.comx', '', 'qq', '.comx')]
print(re.findall(r, s))

http://www.ppmy.cn/news/1557880.html

相关文章

以太网 Ethernet 报文解析

以太网 Ethernet 报文解析 使用canoe 发送报文。解析这个报文 参考资料 IPv4报文协议 链接: https://blog.csdn.net/m0_61643743/article/details/128509490 UDP 报文协议 链接: https://blog.csdn.net/weixin_43142797/article/details/105648071 https://fasionchan.com/ne…

ffmpeg之显示一个yuv照片

显示YUV图片的步骤 1.初始化SDL库 目的&#xff1a;确保SDL库正确初始化&#xff0c;以便可以使用其窗口、渲染和事件处理功能。操作&#xff1a;调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。 2.创建窗口用于显示YUV图像&#xff1a; 目的&#xff1a;创建一个…

【蓝桥杯每日一题】求和——前缀和

求和 蓝桥杯每日一题 2024-12-17 求和 前缀和 题目大意 给定 n n n 个整数 a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1​,a2​,…,an​&#xff0c;求它们两两相乘再相加的和&#xff0c;即&#xff1a; S a 1 ⋅ a 2 a 1 ⋅ a 3 … a 1 ⋅ a n a 2 ⋅ a 3 … a …

金融租赁系统的发展与全球化战略实施探讨

内容概要 金融租赁系统的演变并非一帆风顺&#xff0c;像一场跌宕起伏的电影。首先&#xff0c;咱们得看看它的起源及现状。随着经济的快速发展&#xff0c;金融租赁逐渐作为一种灵活的融资手段崭露头角。在中国市场中&#xff0c;企业对设备和技术更新换代的需求日益迫切&…

C++创建型模式之原型模式

C 原型模式&#xff08;Prototype Pattern&#xff09; 1. 解决的问题 原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;用于解决对象创建的问题&#xff0c;特别是在需要创建多个相似对象时&#xff0c;避免使用重复的构造代码。原型模式…

【Rust自学】6.1. 定义枚举

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 6.1.1. 什么是枚举 枚举允许我们列举所有可能的值来定义一个类型。这与其他编程语言中的枚举类似&#xff0c;但 Rust 的枚举更加灵活和强…

深入解析 Apache APISIX

以下是“第一部分&#xff1a;背景与概述”的示例写作内容&#xff0c;供你参考和使用。你可根据实际需求和篇幅进行增删或细化。 一、背景与概述 1. 高性能动态网关的意义 1.1 微服务架构下的网关角色与价值 随着微服务架构在企业级应用中日益普及&#xff0c;系统被拆分为…

机器学习-逻辑回归和softmax回归

文章目录 逻辑回归逻辑回归算法表达式模型训练逻辑回归做多分类 softmax回归模型实例训练模型 注意代码 逻辑回归 logistic regression 并不是回归任务的算法&#xff0c;而是属于分类任务算法 逻辑回归算法表达式 一个 型曲线&#xff08;Sigmoid函数&#xff09;&#xff0…