Day20-Python基础学习之正则表达式和递归(完结)

正则表达式

基础

# 正则表达式
import re
​
s = "python itcast"
# match 从头开始匹配 头部不匹配返回None
result = re.match("python", s)
print(result)
print(result.span())
print(result.group())
​
# search 从开头找到结尾搜索,找到第一个就停止
s = "1python itcast python"
result = re.search("python", s)
print(result)
​
# findall 搜索全部匹配的
result = re.findall("python", s)
print(result)

元字符匹配

字符功能
.匹配任意1个字符(除\n),\ .匹配.
[]匹配中括号中的所有字符
\d匹配数字
\D匹配非数字
\s匹配空白
\S匹配非空白
\w匹配单词字符小写大写数字下划线
\W匹配非单词字符,即特殊字符

数量匹配

字符功能
*匹配前一个字符出现0-∞次
+匹配前一个字符出现1-∞次
匹配前一个字符出现0或1次
{m}匹配前一个字符出现m次
{m,}匹配前一个字符最少m次
{m,n}匹配前一个字符出现m到n次
^匹配字符串开头
$匹配字符串结尾
\b匹配一个单词的边界
\B匹配非单词边界
|匹配左右任意一个表达式
()将括号中的字符作一个分组
# 元字符匹配
s = "itcast1 @@python2 !!666 ##itheima3"
# 找出全部数字
result = re.findall(r'\d', s)    # r代表字符串里转义字符无效
print(result)
result = re.findall(r'\W', s)
print(result)
result = re.findall(r'[a-zA-Z0-9]', s)
print(result)
​
# 匹配账号,只能由字母和数字组成,6-10位
r = '^[0-9a-zA-Z]{6,10}$'   # ^和$表示从头到位匹配
s = '124211'
result = re.findall(r, s)
print(result)
​
# 匹配QQ号,纯数字,长度5-11,第一位不为0
r = '[1-9][0-9]{4,10}'  # 因为第一位已经占一位了
s = '012345678'
print(re.findall(r, s))    # 这里判断的是字串,所以有结果
​
# 匹配邮箱地址
r = '([\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+)'    # 小括号+‘*’表示这组内容出现几次都行
# 整体括号是因为findall方法只会输出组,所以要变成一个组
s = 'a.b.c.d.e.f.g@qq.com.a.cn'
print(re.findall(r, s))

递归

# 递归
# 通过递归找出一个指定文件夹的全部文件
import os
​
def test_os():print(os.listdir("D:/test"))   # 列出路径下的内容print(os.path.isdir("D:/test"))   # 判断指定路径是不是文件夹print(os.path.exists("D:/test"))   # 判断指定路径是否存在file_list = []
def get_files(path):if os.path.isdir(path):for f in os.listdir(path):new_path = path + "/" + fif os.path.isdir(new_path):get_files(new_path)else:file_list.append(new_path)else:print("路径不存在")return []return file_list

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

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

相关文章

阿里云直播推流和播流地址的生成方法PHP

最近在用阿里云的直播SDK在进行直播功能的开发,整体来说磕磕绊绊,因为里面有好多的东西,一时半会的搞不定,但是工期又有期限,所以天天熬夜,程序员真心不容易,废话不多说,今天分享这个主要就是来…

华为机试:粮油买卖

粮油买卖 | 时间限制:1秒 | 内存限制:262144K 贩卖粮油的小华在经营一段时间后,发现和旁边的商贩相比,利润较低,于是开始记录3,4月份自己经营的粮油价格,以便第二年进行参考,请你写个…

哈希表练习题

前言 本次博客将要写一写,哈希表的一些使用 哈希表主要是一个映射,比如数组就是一个哈希表 是一个整型对应另一个整型,介绍的哈希表还是要以写题目为例 第一题 242. 有效的字母异位词 - 力扣(LeetCode) 直接来看…

chrome插件 脚本 使用和推荐

chrome插件使用 在极简插件中可以进行下载并进行安装, 内部有安装教程在极简插件中搜索"油猴",下载一个油猴插件,并安装,可以用于下载很多的用户脚本用户脚本下载地址Greasy Fork,里面有很多实用的用户脚本供下载,并在油猴中进行管理 推荐的插件 Tampermonkey 篡改…

小红书自动互动,建立个人品牌的秘密武器!

在数字化的今天,个人品牌的重要性不言而喻。它不仅能让你在人群中脱颖而出,还能为你的事业或生意带来无尽的机会。然而,建立并推广个人品牌并非易事,需要策略、耐心和一定的工具辅助。在这里,我们要探讨的是如何利用小…

常用路由交换协议

常用路由交换协议 协议汇总优秀博客参考资料 协议汇总 路由协议原理优点缺点使用场景华为配置示例静态路由网络管理员手动配置路由信息配置简单,安全性高不适应网络变化,管理复杂小型网络或不常变化的环境system-viewip route-static 目的网段 掩码 下一…

【Python数据库】Redis

文章目录 [toc]数据插入数据查询数据更新数据删除查询存在的所有key 个人主页:丷从心 系列专栏:Python数据库 学习指南:Python学习指南 数据插入 from redis import Redisdef insert_data():redis_cli Redis(hostlocalhost, port6379, db…

智慧健康旅居养老产业,做智慧旅居养老服务的公司

随着社会的进步和科技的飞速发展,传统的养老模式已经无法满足 现代老年人的多元化 需求。智慧健康旅居养老产业应运而生,成为了一种新型的养老模式,旨在为老年人提供更加舒适、便捷、安全的养老生活。随着社会的进步和人口老龄化趋势的加剧&a…

MATLAB初学者入门(15)—— 随机森林

随机森林是一种强大的机器学习方法,基于多个决策树的训练结果进行集成学习,以提高整体的预测准确性和稳定性。这种方法不仅适用于分类问题,也非常适合于回归问题。MATLAB中的Statistics and Machine Learning Toolbox提供了易于使用的随机森林…

vue2 upload多图片上传

dom <el-upload:class"{ uoloadSty: showBtnImg, disUoloadSty: noneBtnImg }"class"avatar-uploader"ref"upload" action"#":limit"limitCountImg" //限制上传图片的数量:show-file-list"true" //列表展示:au…

如何3分钟,快速开发一个新功能

背景 关于为什么做这个代码生成器&#xff0c;其实主要有两点: 参与的项目中有很多分析报表需要展示给业务部门&#xff0c;公司使用的商用产品&#xff0c;或多或少有些问题&#xff0c;这部分可能是历史选型导致的&#xff0c;这里撇开不不谈&#xff1b;项目里面也有很多C…

Sping源码(七)—context: component-scan标签如何扫描、加载Bean

序言 简单回顾一下。上一篇文章介绍了从xml文件context component-scan标签的加载流程到ConfigurationClassPostProcessor的创建流程。 本篇会深入了解context component-scan标签底层做了些什么。 component-scan 早期使用Spring进行开发时&#xff0c;很多时候都是注解 标…

机器人定位导读

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一、机器人中常见的定位技术介绍二、gnss、rtk定位原理三、【依赖二维激光雷达与全局地图的定位算法】amcl&#xff08;蒙特卡…

项目上线流程(保姆级教学)

01&#xff1a;注册阿里云账户 02&#xff1a;登录阿里云 03&#xff1a;在桌面新建记事本保存个人账号密码等信息 04&#xff1a;完成重置密码 05&#xff1a;安装宝塔面板 命令行 yum install -y wget && wget -O install.sh http://download.bt.cn/install/instal…

大学生在线考试|基于SprinBoot+vue的在线试题库系统系统(源码+数据库+文档)

大学生在线考试目录 基于SprinBootvue的在线试题库系统系统 一、前言 二、系统设计 三、系统功能设计 试卷管理 试题管理 考试管理 错题本 考试记录 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#…

华纳云:怎么防止租用服务器的数据丢失?

要防止租用服务器上的数据丢失&#xff0c;可以采取以下一些措施&#xff1a; 定期备份数据&#xff1a;建立定期备份数据的机制&#xff0c;将重要数据备份到安全的地方&#xff0c;例如云存储服务、外部硬盘或者另一个服务器上。备份频率可以根据数据的重要性和变动频率来确定…

Java数据结构堆

堆的概念 所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中。 小根堆&#xff1a;根节点的大小小于孩子节点。整棵树都是小根堆必须满足每颗子树都是小根堆。 堆的存储方式 从堆的概念可知&#xff0c;堆是一棵完全二叉树&#xff0c;因此可以层序的规则采用顺序的…

java算法题42501

题目 算法题: (1)给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 输入:nums = [1,2,3,1] 输出:true解法1,使用HashSet 使用HashSet来存储数组中的元素,同时遍历数组。如果遍历过程中发现某个元素…

【JVM】java内存区域

目录 一、运行时数据区域 1、方法区 2、堆 3、虚拟机栈 4、本地方法栈 5、程序计数器 6、运行时常量池 二、HotSpot虚拟机的对象 1、对象的创建 指针碰撞&#xff1a; 空闲列表&#xff1a; 2、对象的内存布局 对象头 实例数据 对齐填充 3、对象的访问定位 句…

git忽略文件配置 !

.gitignore中!表示取反 注意&#xff0c;如果父目录被排除&#xff0c;则父目录下的子目录也会被排除&#xff0c;此时对父目录下的子目录取反也不会生效&#xff0c;比如存在目录结构&#xff0c;再.gitignore目录下配置的 /*&#xff08;排除所有文件&#xff09;&#xff0c…