python学习_4.正则表达式练习_1

练习1_re模块

1. re.search(pattern, string, flags=0)

  • 作用:在字符串中搜索匹配的模式,找到第一个匹配后返回一个Match对象,如果没有找到匹配,则返回None

  • 示例

    import re
    result = re.search(r'\d+', 'hello 123 world')
    print(result.group())  # 输出: 123
    

2. re.match(pattern, string, flags=0)

  • 作用:与search()类似,但是它只匹配字符串的开始。如果字符串的开始不符合模式,则返回None

  • 示例

    result = re.match(r'\d+', '123 hello world')
    print(result.group())  # 输出: 123
    

3. re.findall(pattern, string, flags=0)

  • 作用:返回字符串中所有与模式匹配的非重叠匹配项的列表。

  • 示例

    results = re.findall(r'\d+', 'hello 123 world 456')
    print(results)  # 输出: ['123', '456']
    

4. re.finditer(pattern, string, flags=0)

  • 作用:返回一个迭代器,产生所有匹配的Match对象。

  • 示例

    for match in re.finditer(r'\d+', 'hello 123 world 456'):print(match.group())  # 分别输出: 123 和 456
    

5. re.sub(pattern, repl, string, count=0, flags=0)

  • 作用:用repl替换string中所有匹配pattern的部分,返回替换后的字符串。count参数可以指定最大替换次数。

  • 示例

    new_string = re.sub(r'\d+', 'number', 'hello 123 world 456')
    print(new_string)  # 输出: hello number world number
    

6. re.subn(pattern, repl, string, count=0, flags=0)

  • 作用:与sub()相同,但是返回一个元组,包含替换后的字符串和替换的次数。

  • 示例

    new_string, n = re.subn(r'\d+', 'number', 'hello 123 world 456')
    print(new_string)  # 输出: hello number world number
    print(n)  # 输出: 2
    

7. re.split(pattern, string, maxsplit=0, flags=0)

  • 作用:根据模式对字符串进行分割,返回一个列表。maxsplit参数可以指定最大分割次数。

  • 示例

    parts = re.split(r'\s+', 'hello   world')
    print(parts)  # 输出: ['hello', 'world']
    

8. re.compile(pattern, flags=0)

  • 作用:编译正则表达式模式为正则表达式对象,这样可以在后续的操作中复用这个对象,提高效率。

  • 示例

    pattern = re.compile(r'\d+')
    result = pattern.search('hello 123 world')
    print(result.group())  # 输出: 123
    

以上就是关于re模块中一些常用方法的简介和示例,希望对您有所帮助。如果您有任何具体的问题或需要进一步的帮助,请随时提问!

练习2_排序

flag.txt

├── 课时6混淆一句话木马编写.mp4
├── 课时15awd_web题目(python)复盘(二).mp4
├── 课时13awd_web题目(jsp)复盘(一).mp4
├── 课时4awd批量一句话写入木马.mp4
├── 课时8awd攻防平台搭建部署.mp4
├── 课时10awd_web题目(php)复盘(二).mp4
├── 课时5awd批量获取flag.mp4
├── 课时9awd_web题目(php)复盘(一).mp4
├── 课时12awd_web题目(php)复盘(四).mp4
├── 课时2awd恶意程序利用脚本编写.mp4
├── 课时7awd不死马权限维持及变种.mp4
├── 课时11awd_web题目(php)复盘(三).mp4
├── 课时14awd_web题目(python)复盘(一).mp4
├── 课时3awd一句话木马利用解析.mp4
├── 课时1awd比赛那些事.mp4
exp1
import re
def sort123(filename):                                       #(5)+好不要忘记掉了,要不然只会匹配一个match=re.search(r'课时(\d+)',filename)             #2.直接定位到课时和后面的数字if match:return int(match.group(1))                           #1.不将它转换为正整数的话,他12这些会当作1else:return float('inf')
with open('flag.txt','r',encoding='utf-8') as f:             #3.记得加一下编码lines=f.readlines()
lines =[line.strip() for line in lines]sorted_lines=sorted(lines,key=sort123)                        #4.sorted方法,就是升序排序with open('flag_1.txt','w',encoding='utf-8') as f:for line in sorted_lines:f.write(line+'\n')
for lines in sorted_lines:print(lines)
官方exp
import re
def sort_by_lesson_number(file_name):# 使用正则表达式匹配课时号match = re.search(r'课时(\d+)', file_name)if match:return int(match.group(1))                                #1.不将它转换为正整数的话,他12这些会当作1else:return float('inf')  # 如果没有找到课时号,则将其放在列表末尾
# 从文件中读取数据
with open('flag.txt', 'r', encoding='utf-8') as file:lines = file.readlines()
# 去除每行末尾的换行符
lines = [line.strip() for line in lines]
# 按照课时号排序
sorted_lines = sorted(lines, key=sort_by_lesson_number)
# 将排序后的结果写入新的文件
with open('flag_output.txt', 'w', encoding='utf-8') as output_file:for line in sorted_lines:output_file.write(line + '\n')
# 打印排序后的结果(可选)
for line in sorted_lines:print(line)
├── 课时1awd比赛那些事.mp4
├── 课时2awd恶意程序利用脚本编写.mp4
├── 课时3awd一句话木马利用解析.mp4
├── 课时4awd批量一句话写入木马.mp4
├── 课时5awd批量获取flag.mp4
├── 课时6混淆一句话木马编写.mp4
├── 课时7awd不死马权限维持及变种.mp4
├── 课时8awd攻防平台搭建部署.mp4
├── 课时9awd_web题目(php)复盘(一).mp4
├── 课时10awd_web题目(php)复盘(二).mp4
├── 课时11awd_web题目(php)复盘(三).mp4
├── 课时12awd_web题目(php)复盘(四).mp4
├── 课时13awd_web题目(jsp)复盘(一).mp4
├── 课时14awd_web题目(python)复盘(一).mp4
├── 课时15awd_web题目(python)复盘(二).mp4

 

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

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

相关文章

Cherno OpenGL(18 ~ 24)

混合 默认情况下 OpenGL 不执行任何混合,它只需要你们渲染的东西,然后把它渲染成不透明的东西。 之前我们渲染了红色方块,在它上面我们以某种形式渲染了一个半透明的蓝色方块(不透明的蓝色方块会直接覆盖红色方块)&am…

HashMap源码分析下

HashMap 环境 JDK11 HashMap是用哈希表结构&#xff08;链表散列&#xff1a;数组链表&#xff09;实现&#xff0c;结合数组和链表的优点。扩容时当链表长度超过 6 时&#xff0c;链表转换为红黑树。 public class HashMap<K,V> extends AbstractMap<K,V>impleme…

【Golang】——Gin 框架简介与安装

文章目录 1. Gin 框架概述1.1 什么是 Gin 框架&#xff1f;1.2 为什么选择 Gin&#xff1f;1.3 使用场景 2. 安装 Go 与 Gin 框架2.1 安装 Go 语言环境2.2 初始化 Go 项目2.3 安装 Gin 框架 3. 编写第一个 Gin 应用3.1 Gin 最小化示例代码代码解读3.2 运行程序3.3 测试服务 4. …

南京邮电大学《智能控制技术》期末抢救(上)

一、智能控制的提出 传统控制方法包括经典控制和现代控制——基于被控对象精确模型的控制方式&#xff0c;缺乏灵活性和应变能力&#xff0c;适于解决线性、时不变性等相对简单的控制问题。传统控制方法在实际应用中遇到很多难解决的问题&#xff0c;主要表现以下几点&#xff…

系统设计-系统回调通知设计

系统回调通知设计 消息类型容错机制消息协议负载均衡监控&告警很多公司的架构都存在与外界系统有交互,交互难免会有一些同步请求、回调通知等。且公司一般网络的出入口都是只有一个,而各个业务条线只要存在和外界系统有业务往来,都会存在回调通知,所以可以设计一个公司…

Seatunnel2.3.5的FTP无法读取中文路径的问题

问题原因 Seatunnel的connector-file下的ftp包中关于读取文件的路径没有对路径进行编码导致当有中文的时候会出现乱码 修改源码 我们需要修改两处位置 一处是判断路径是否存在的方法 一处是读取文件的流的地方 修改判断文件是否存在的地方 这个文件的路径是org/apache/sea…

基于java的果蔬种植销售一体化服务平台

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

【云岚到家】-day10-1-状态机增删查

【云岚到家】-day10-1-状态机增删查 1 订单管理1&#xff09;订单管理管什么&#xff1f; 2 基础设计2.1 订单状态流转1&#xff09;订单状态流转图2&#xff09;订单状态3&#xff09;服务单状态 2.2 数据库设计1&#xff09;表设计2&#xff09;分库分表 2.3 状态机设计1&…

ICML24|通用时间序列预测大模型思路

论文标题&#xff1a;Unified Training of Universal Time Series Forecasting Transformers GitHub链接&#xff1a;https://github. com/SalesforceAIResearch/uni2ts 论文链接&#xff1a;https://arxiv.org/pdf/2402.02592 前言 普适预测器是一个能够处理任何时间序列预…

LRU(Least Recently Used,最近未使用)

一、LRU的由来 lru的引入主要是和内存回收有关。 属于内核的大部分page是不能够进行回收的&#xff0c;比如内核栈、内核代码段、内核数据段以及大部分内核使用的page&#xff0c;它们都是不能够进行回收的&#xff1b; 相反&#xff0c;进程使用的page&#xff0c;比如进程…

网盘聚合搜索项目Aipan(爱盼)

本文软件由网友 刘源 推荐&#xff1b; 简介 什么是 Aipan&#xff08;爱盼&#xff09; ? Aipan&#xff08;爱盼&#xff09;是一个基于 Vue 和 Nuxt.js 技术构建的开源网盘搜索项目。其主要目标是为用户提供一个能够自主拥有和管理的网盘搜索网站。该项目持续维护和更新&a…

i春秋-Hash(__wakeup沉默、序列化)

练习平台地址 竞赛中心 题目描述 题目内容 啥也没有就一个标签跳转 点击后的确发生了跳转 观察到url中有key和hash两个值&#xff0c;猜测hash是key的hash 查看源代码发现确实是 $hashmd5($sign.$key);the length of $sign is 8 解密得到$sign应该为kkkkkk01 构造122的hash i…

【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的智能蒙绮英语学习系统设计与实现

开题报告 随着全球化的不断深入&#xff0c;英语作为国际通用语言&#xff0c;其重要性日益凸显。掌握英语不仅可以拓宽个人的视野和知识面&#xff0c;还可以增强个人竞争力&#xff0c;为个人职业发展带来更多机会。因此&#xff0c;开发一款能够帮助用户更高效地学习英文单…

Blender vs 3dMax谁才是3D软件的未来?

在探讨Blender与3ds Max谁才是3D软件的未来时&#xff0c;我们需要从多个维度对这两款软件进行详细分析。 Blender的优势 开源免费&#xff1a;Blender是一款完全免费的开源3D创作套件&#xff0c;这使得它成为独立艺术家、业余爱好者和小型工作室的首选。用户无需承担巨额的…

ubuntu安装cuda、cudnn和TensoRT【分步安装】

我说实话&#xff0c;这个环境安装真的要了老命&#xff0c;太tm恶心了。 因为遇到了很多问题&#xff0c;非常之恶心 问题一&#xff1a;版本对应 问题二&#xff1a;下载具慢 问题三&#xff1a;上NVIDIA有时候上不去 问题四&#xff1a;找到对应版本点不了 问题五&…

基于树莓派的边缘端 AI 目标检测、目标跟踪、姿态估计 视频分析推理 加速方案:Hailo with ultralytics YOLOv8 YOLOv11

文件大纲 加速原理硬件安装软件安装基本设置系统升级docker 方案Demo 测试目标检测姿态估计视频分析参考文献前序树莓派文章hailo加速原理 Hailo 发布的 Raspberry Pi AI kit 加速原理,有几篇文章介绍的不错 https://ubuntu.com/blog/hackers-guide-to-the-raspberry-pi-ai-ki…

网络工程实验一:静态路由的配置

#实验仅供参考&#xff0c;勿直接粘贴复制&#xff0c;用以学习交流# 1、实验目的&#xff1a; 熟悉eNSP网络仿真工具平台。 掌握静态路由配置方法。 能够配置路由器接口地址。 2、实验内容&#xff1a; 2.1、安装对应的软件&#xff1a; &#xff08;1&#xff09;Virtual …

基于java的宠物用品交易平台

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

华为VPN技术

1.启动设备 2.配置IP地址 [FW1]int g1/0/0 [FW1-GigabitEthernet1/0/0]ip add 192.168.1.254 24 [FW1-GigabitEthernet1/0/0]int g1/0/1 [FW1-GigabitEthernet1/0/1]ip add 100.1.1.1 24 [FW1-GigabitEthernet1/0/1]service-manage ping permit [FW2]int g1/0/0 [FW2-Gi…