python正则表达式和递归
一、正则表达式
1.基础匹配
学习目标:了解什么是正则表达式,掌握re模块的基础使用

就是一种规则的定义,通过规则去验证给定的目标是否符合定义的规则。
正则的三个基础方法

match
match是匹配开头,开头有python就算匹配成功,没有就是不成功,只要开头不匹配后面的根本不关心。
span(0,6)说的是下标从0到6


search

从头开始找,只找一个,后面的不予理会

findall

找出来所有相匹配的数据,以列表的形式输出出来。

"""
演示python正则表达式re模块的3个基础匹配方法
"""
import re
s = "1python itheima python"
# match 从头匹配
result = re.match("1python",s)
print(result)
print(result.span())
print(result.group())
# search 搜索匹配
result = re.search("python",s)
print(result)# findall 搜索全部匹配
result = re.findall("python",s)
print(result)
总结

2.元字符匹配
学习目标:掌握正则表达式的各类元字符规则,了解字符串的r标记的作用。
单字符匹配


因为反斜杠\有具体的含义,可能代表转义字符,所以给字符串一个r标记,表示字符串中转义字符无效,就是普通字符的意思。
找出全部的数字

找出特殊符号 \W(大写的W)

找出全部英文字母
使用[],[]里面可以写想要的规则范围,可以自己规定范围


元字符匹配


小练习




findall如果我们的正则表达式里面有分组,就会把每一个组的结果都给你列出来

因此我们也可以使用match
"""
演示python正则表达式使用元字符进行匹配
"""
import re# 匹配账号,只能由字母和数字组成,长度限制6到10位
# r = '^[0-9a-zA-Z]{6,10}$' # ^ $表示从头开始匹配,匹配到最后结尾。在正则里面,不要随意加空格。
# s = '124343'
# s1 = 'adhalod'
# s2 = '2s233s2'
# s3 = '...d7dd'
# print(re.findall(r,s))
# print(re.findall(r,s1))
# print(re.findall(r,s2))
# print(re.findall(r,s3))
# 匹配QQ号,要求纯数字,长度5~11,第一位不为0
# r = '^[1-9][0-9]{4,10}$' # 不写范围就是默认是一个数
# s = '013131'
# s1 = '347834'
# s2 ='233ew23'
# print(re.findall(r,s))
# print(re.findall(r,s1))
# print(re.findall(r,s2))
# 匹配邮箱地址,只允许qq、163、gmail这三种邮箱地址
# 邮箱地址大体是{内容}.{内容}@{内容}.{内容}.{内容} acd.cdac.acd@qq.adf
r =r'(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$)'
s = 's.ds.dsada.as@qq.aif.fdsiad'
print(re.match(r,s))
总结

二、递归
学习目标:掌握什么是递归,掌握递归案例的开发。

那么什么样的场景会用到递归呢?

比如来说,如果你是文件夹,我就再调用自己再进去看看,如果你不是,我就收集文件
就是说一个文件夹,进去发现是文件就返回给上一层,是文件夹就在进入这个文件夹看是文件还是文件夹,不断的返回给上一层最后就把全部的文件都收集到了
说起来比较抽象,让我们用代码演示一下。
实战演示
大家也可以自己创建一个如图所示的文件夹来试试代码能否正常运行。



"""
演示python进行排序
需求:通过递归,找出一个指定文件夹的全部文件思路:写一个函数,列出文件夹内的全部内容,如果是文件就收集到list
如果是文件夹,就递归调用自己,再次判断
"""
import os
def test_os():"""演示os模块的三个基础方法"""print(os.listdir("D:/test")) # 可以帮我们列举出指定文件夹里面有哪些内容print(os.path.isdir("D:/test/a")) # 判断你给的路径是否是一个文件夹print(os.path.exists("D:/test")) # 判断指定路径是否存在def get_files_recursion_from_dir(path):print(f"当前判断的文件夹是:{path}")file_list = []"""从指定的文件夹中使用递归的方式,获取全部的文件列表:param path:被判断的文件夹:return:list,包含全部的文件,如果目录不存在或者无文件就返回一个空list"""if os.path.exists(path):for f in os.listdir(path):new_path = path + "/" + fif os.path.isdir(new_path):# 进入到这里,表示这个目录是文件夹不是文件file_list += get_files_recursion_from_dir(new_path)else:file_list.append(new_path)else:print(f"指定的目录{path},不存在")return []return file_list
if __name__ == '__main__':print(get_files_recursion_from_dir("D:/test"))

总结

相关文章:
python正则表达式和递归
一、正则表达式 1.基础匹配 学习目标:了解什么是正则表达式,掌握re模块的基础使用 就是一种规则的定义,通过规则去验证给定的目标是否符合定义的规则。 正则的三个基础方法 match match是匹配开头,开头有python就算匹配成功&a…...
JAVA后端生成图片滑块验证码 springboot+js完整案例
前言 现在大部分网部都是图片滑块验证码,这个得要与后端联动起来才是确保接口安全性 通过我们系统在发送手机短息时都会选进行滑块验证,但是我们要保证发送短息接口的全安,具体路思如下 那么这个滑块的必须是与后端交互才能保证安全性&…...
Spring Boot中的自动装配机制
文章目录 1. 什么是自动装配?2. 自动装配是如何工作的?3. 如何开启自动装配?4. 自动装配的注意事项5. 结语推荐阅读文章 在Spring Boot的世界里,自动装配(Auto-configuration)就像春风拂面,轻轻…...
Brave127编译指南 Windows篇:配置Git(四)
1. 概述 在Brave浏览器的开发过程中,Git作为核心版本控制工具扮演着不可或缺的角色。作为当今最广泛使用的分布式版本控制系统,Git为开发者提供了强大的源码管理能力。通过Git,您可以轻松追踪代码变更、管理不同版本,并与其他开发…...
mysql数据库(五)多表查询
多表查询 文章目录 多表查询一、链表查询1.1交叉连接1.2 内连接1.3 左连接1.4 右连接1.5 全连接1.6 例子 二、子查询2.1 in与not in2.2 any/some2.3 all2.4 比较运算符2.5 exists 三、例子 查询中使用的表如下所示 ------------ | id | name | ------------ | 1 | IT | …...
【go从零单排】JSON序列化和反序列化
🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,处理 JSON 数据主要依赖于 encoding/json 包。这个包提…...
海外携程机票token 1001分析
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我删…...
【算法】——二分查找合集
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 零:二分查找工具 1:最基础模版 2:mid落点问题 一:最…...
社会工程骗局席卷金融机构
2024 年北美金融机构收到的社交工程诈骗报告数量比一年前增加了 10 倍。数据显示,诈骗现在占所有数字银行欺诈的 23%。 深度伪造和 GenAI 诈骗的危险日益增加 BioCatch 在其 2024 年北美数字银行欺诈趋势报告中公布了这些发现,该报告还详细说明了报告的…...
前缀和算法习题篇(上)
1.一维前缀和 题目描述: 解法一:暴力解法:模拟 时间复杂度是O(n*q),会超时。 解法二:前缀和解法:快速求出数组中某一个连续区间的和 快速是指O(1),前缀和思想可把时间复杂度可降到O(q)。 算法思路: 先预处…...
C#核心(9)静态类和静态构造函数
前言 我们先前已经了解了静态成员的基本构成,也简单了解了一下静态变量,现在我们就要来看一下静态类和静态构造函数了,这些其实在上一节我已经在例子里有提到过,相信聪明的你甚至已经发现了一些规律。 GPT对c#中静态类和静态构造…...
B2002 Hello,World! C++实现
Hello,World! 题目描述 编写一个能够输出 Hello,World! 的程序。 提示: 使用英文标点符号;Hello,World! 逗号后面没有空格。H 和 W 为大写字母。 输入格式 输出格式 样例 #1 样例输入 #1 无样例输出 #1 Hello,World!#include <bits/stdc.h&…...
前端-同源与跨域
一、同源策略 两个网站协议名、域名、端口号有一个不同就是非同源,就是跨域。跨域问题就是浏览器的同源策略造成的。 同源是指协议名、域名、端口号 必须完全一致! http 默认端口号是80,https 默认端口号是443 同源策略的限制 一般来说&…...
MySQL远程连接错误解决:Host is not allowed to connect to this MySQL server
1. 异常错误 通过远程客户端访问MySQL服务器时会遇到“Host is not allowed to connect to this MySQL server”的错误提示。 2. 原因 MySQL服务器当前配置不允许来自特定主机的连接尝试。 3. 解决方法 允许远程主机访问MySQL服务器,按照以下步骤操作ÿ…...
详解C语言字符和字符串的输入与输出
字符和字符串的输入与输出 一、字符的输入与输出1.1 字符的输入使用 getchar()使用 scanf() 1.2 字符的输出使用 putchar()使用 printf() 二、字符串的输入与输出2.1 字符串的输入使用 scanf() 输入字符串使用 fgets() 输入字符串 2.2 字符串的输出使用 printf() 输出字符串使用…...
adworld - stack2
adworld - stack2 题目概述:给一个数组(自己控制数组大小和填入的数据),并进行(展示, 增加, 修改值, 求平均值, 退出)菜单选项 存在后门函数(system(“/bin/bash”)),但是没找到栈溢出的点 没判断数组的边界造成任意地址修改 但是如何准确…...
Python学习从0到1 day28 Python 高阶技巧 ⑤ 多线程
若事与愿违,请相信,上天自有安排,允许一切如其所是 —— 24.11.12 一、进程、线程 现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。 进程 进程:就…...
nuget 管理全局包、缓存和临时文件夹
查看文件夹位置 dotnet nuget locals all --list清空数据 # Clear the 3.x cache (use either command) dotnet nuget locals http-cache --clear nuget locals http-cache -clear# Clear the 2.x cache (NuGet CLI 3.5 and earlier only) nuget locals packages-cache -clea…...
linux物理内存管理:node,zone,page
一、总览 对于物理内存内存,linux对内存的组织逻辑从上到下依次是:node,zone,page,这些page是根据buddy分配算法组织的,看下面两张图: 上面的概念做下简单的介绍: Node:…...
uniapp 设置安全区域
<!-- 获取安全区域 --> <script setup lang"ts"> import { computed, ref } from vuelet systemType ref(1) // #ifdef APP-PLUS || H5 || APP-PLUS-NVUE systemType.value 1 const { safeAreaInsets } uni.getSystemInfoSync() console.log(safeAre…...
Pixel Epic · Wisdom Terminal保姆级教程:备份与恢复研报工程文件全指南
Pixel Epic Wisdom Terminal保姆级教程:备份与恢复研报工程文件全指南 1. 引言:为什么需要备份研报工程文件 在Pixel Epic Wisdom Terminal中,每一份研究报告都是你与AI贤者共同创造的智慧结晶。就像RPG游戏中的存档点一样,定…...
如何快速上手AutoGPT-Next-Web:5分钟搭建专属AI助手
如何快速上手AutoGPT-Next-Web:5分钟搭建专属AI助手 【免费下载链接】AutoGPT-Next-Web 🤖 Assemble, configure, and deploy autonomous AI Agents in your browser.一键免费部署你的私人AutoGPT 网页应用 项目地址: https://gitcode.com/gh_mirrors/…...
威纶通宏指令实战:从零构建中文输入与智能配方检索系统
1. 威纶通触摸屏的中文输入困境与破解之道 第一次接触威纶通中低端触摸屏时,我就被它缺乏中文输入支持的问题给难住了。当时接了个食品包装机的项目,客户要求操作界面必须支持中文输入,方便工人记录生产批号和产品信息。市面上常见的中高端HM…...
Jenkins vs GitLab CI/CD:2026 企业级 CI/CD 工具深度选型评测
Jenkins vs GitLab CI/CD:2026 企业级 CI/CD 工具深度选型评测 作为在 CI/CD 领域摸爬滚打十余年的全栈老兵,我见证了从手工部署到云原生 DevOps 的完整演进。今天,我们将抛开宗教战争式的争论,用真实数据和生产环境案例ÿ…...
Phi-4-mini-reasoning入门指南:用Gradio Blocks构建多步解题UI
Phi-4-mini-reasoning入门指南:用Gradio Blocks构建多步解题UI 1. 认识Phi-4-mini-reasoning Phi-4-mini-reasoning是一款3.8B参数的轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这个模型主打"小参数、强推理、长上下文、…...
QQ空间记忆备份终极指南:3步永久保存你的数字青春
QQ空间记忆备份终极指南:3步永久保存你的数字青春 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心那些珍贵的QQ空间说说会随着时间消失?那些记录着青春…...
java打卡学习6:集合框架 Collection
集合框架概述集合框架(Collection Framework)是Java中用于存储、操作和传输数据的标准化架构。它提供了一组接口、实现类和算法,用于处理对象集合,简化了数据结构的操作。核心目标:性能优异:提供不同数据结…...
GLM-4.1V-9B-Base模型微调入门:使用accelerate库进行高效参数优化
GLM-4.1V-9B-Base模型微调入门:使用accelerate库进行高效参数优化 1. 引言 想为特定业务场景定制一个强大的多模态AI模型?GLM-4.1V-9B-Base作为支持图文理解与生成的大模型,通过微调可以快速适配各种下游任务。本文将带你从零开始ÿ…...
【已验证】STM32驱动OLED(SSD1306)显示字符
本文介绍如何使用STM32F103C8T6(蓝板)通过软件模拟IIC协议驱动0.96英寸OLED(驱动芯片SSD1306),这个小屏幕相信每一个朋友在大学生活里都不会错过,也是很多课设毕设显示需求的首选,我一向喜欢直接…...
自适应滤波实战:如何用LMS算法在MATLAB/Simulink中快速搭建一个‘简易版’维纳滤波器?
自适应滤波实战:LMS算法在MATLAB/Simulink中的工程化实现 在信号处理领域,自适应滤波技术因其强大的环境适应能力而备受青睐。想象一下,你正在处理一段被噪声污染的语音信号,或是试图从复杂工业环境中提取有效振动特征——传统固定…...
