Python--正则表达式
1. 日志打印与终端颜色控制
1.1 使用 loguru 打印日志
from loguru import loggerlogger.debug("调试信息")
logger.info("普通信息")
logger.warning("警告信息")
logger.error("错误信息")
logger.success("成功信息")
1.2 终端颜色控制(Colorama)
Colorama 库用于控制终端输出的颜色和样式。
- 字体颜色:Fore.RED, Fore.GREEN
- 背景颜色:Back.BLACK, Back.CYAN
- 样式:Style.BRIGHT, Style.DIM
示例:
from colorama import Fore, Back, Styleprint(Fore.RED + "红色字体" + Style.RESET_ALL)
print(Back.GREEN + "绿色背景" + Style.RESET_ALL)
print(Style.BRIGHT + "高亮文本" + Style.RESET_ALL)
2. 正则表达式
2.1 基础语法与元字符
| 元字符 | 描述 | 示例 |
|---|---|---|
| . | 匹配除换行符外的任意字符 | a.c → "abc", "a1c" |
| | | 逻辑或 | a|b → "a" 或 "b" |
| [] | 字符集匹配 | [aeiou] → 匹配任意元音字母 |
| [^] | 字符集取反 | [^0-9] → 匹配非数字字符 |
| () | 分组匹配 | (ab)+ → "ab", "abab" |
| \ | 转义字符 | \. → 匹配小数点 . |
2.2 预定义字符集
| 表达式 | 匹配内容 | 等价形式 |
|---|---|---|
| \d | 数字 | [0-9] |
| \w | 字母/数字/下划线 | [A-Za-z0-9_] |
| \s | 空白字符 | [ \t\n\r\f\v] |
| \D | 非数字 | [^\d] |
| \W | 非单词字符 | [^\w] |
| \S | 非空白字符 | [^\s] |
2.3 重复匹配
| 表达式 | 描述 | 示例 |
|---|---|---|
| {n} | 重复n次 | a{3} → "aaa" |
| {m,n} | 重复m到n次 | a{2,4} → "aa", "aaa", "aaaa" |
| ? | 0或1次 | a? → "" 或 "a" |
| + | 至少1次 | a+ → "a", "aaa" |
| * | 0到多次 | a* → "", "a", "aaaa" |
2.4 贪婪与非贪婪模式
-
贪婪模式:默认匹配尽可能长的字符串。
- 示例:a.*b 匹配 "aabcb" 中的整个字符串。
-
非贪婪模式:使用 ? 匹配尽可能短的字符串。
- 示例:a.*?b 匹配 "aabcb" 中的 "aab" 和 "ab"。
2.5 常用正则表达式案例
- 邮箱匹配:^[\w\.-]+@[\w\.-]+\.\w+$
- IP地址匹配:^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
- 日期格式(YYYY-MM-DD):^\d{4}-\d{2}-\d{2}$
2.6 高级功能
分组与后向引用
-
分组捕获:使用 () 分组并提取匹配内容。
import re pattern = r"(\d{4})-(\d{2})-(\d{2})" match = re.match(pattern, "2023-10-05") if match:year, month, day = match.groups()print(f"Year: {year}, Month: {month}, Day: {day}") # Year: 2023, Month: 10, Day: 05 -
后向引用:通过 \1, \2 引用分组内容。
# 匹配重复单词,如 "hello hello" pattern = r"(\b\w+\b)\s+\1" print(re.findall(pattern, "hello hello world")) # ['hello']
零宽断言(Lookahead/Lookbehind)
-
正向肯定预查 (?=...):匹配后面紧跟特定模式的位置。
# 匹配后面跟着 "px" 的数字,如 "100px" pattern = r"\d+(?=px)" print(re.findall(pattern, "200px 300em 150px")) # ['200', '150'] -
负向否定预查 (?!...):匹配后面不跟特定模式的位置。
# 匹配不以 "px" 结尾的数字,如 "200em" pattern = r"\d+(?!px)" print(re.findall(pattern, "200px 300em 150px")) # ['300']
正则表达式修饰符
| 修饰符 | 描述 | 示例 |
|---|---|---|
| re.I | 忽略大小写 | re.findall(r"apple", "Apple", re.I) → ['Apple'] |
| re.M | 多行模式 | 使 ^ 和 $ 匹配每行的开头和结尾 |
| re.S | 让 . 匹配包括换行符在内的所有字符 | re.findall(r"a.*b", "a\nb", re.S) → ['a\nb'] |
相关文章:
Python--正则表达式
1. 日志打印与终端颜色控制 1.1 使用 loguru 打印日志 from loguru import loggerlogger.debug("调试信息") logger.info("普通信息") logger.warning("警告信息") logger.error("错误信息") logger.success("成功信息"…...
【java面试】线程篇
1.什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。 2.线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任…...
分布式光纤传感:为生活编织“感知密网”
分布式光纤测温技术虽以工业场景为核心,但其衍生的安全效益已逐步渗透至日常生活。 分布式光纤测温技术(DTS)作为一种先进的线型温度监测手段,近年来在多个领域展现了其独特的优势。虽然其核心应用场景主要集中在工业、能源和基础…...
cmake Qt Mingw windows构建
今天教大家怎么在windows构建qt应用使用cmd命令行,而不是一键通过QtCreator一键构建。首先我们用qtcreator创建一个模板程序(PS:记得在安装qt时要悬着mingw套件,如果安装太慢可以换源) 输入以下的命令: mkdir build …...
无人机信号调制技术原理
一、调制技术的必要性 频谱搬移:将低频的基带信号搬移到高频的载波上,便于天线辐射和传播。 信道复用: 利用不同的载波频率或调制方式,实现多路信号同时传输,提高信道利用率。 抗干扰: 通过选择合适的调…...
书评与笔记:《如何有效报告Bug》
文章目录 书评笔记核心原则1. 首要目标:让程序员亲眼看到问题2. 次要目标:详细描述问题3. 保持冷静,避免误操作4. 提供额外信息5. 清晰、准确地表达 实用建议不要自作聪明地诊断问题类比:看医生时的症状描述程序员的心理 总结 原文…...
3.【线性代数】——矩阵乘法和逆矩阵
三 矩阵乘法和逆矩阵 1. 矩阵乘法1.1 常规方法1.2 列向量组合1.3 行向量组合1.4 单行和单列的乘积和1.5 块乘法 2. 逆矩阵2.1 逆矩阵的定义2.2 奇异矩阵2.3 Gauss-Jordan 求逆矩阵2.3.1 求逆矩阵 ⟺ \Longleftrightarrow ⟺解方程组2.3.2 Gauss-Jordan求逆矩阵 1. 矩阵乘法 1.…...
[JVM篇]虚拟机性能监控、故障处理工具
虚拟机性能监控、故障处理工具 基础故障处理工具 jps(JVM Peocess Status Tool - 虚拟机进程状况工具) jstat(JVM Statistics Monitoring Too - 虚拟机统计信息监视工具) jinfo( Configuration info for Java - Java配置信息工具) jmap(Memory Map for…...
UniApp 中 margin 和 padding 属性的使用详解
margin 属性的作用与使用 margin 属性用于设置元素的外边距,也就是元素与其他元素之间的距离。它可以分别设置元素四个方向(上、右、下、左)的外边距,也支持使用简写形式来一次性设置多个方向的外边距。 <template><view…...
`fi` 是 Bash 脚本中用来结束 `if` 条件语句块的关键字
fi 是 Bash 脚本中 if 语句的结束标志,它用于结束一个 if 块。与其他编程语言(如 C、Java)中的 } 不同,Bash 使用 fi 来标识条件语句的结束。 语法示例: if [ condition ]; then# 如果条件为真时执行的代码echo &quo…...
cap2:1000分类的ResNet的TensorRT部署指南(python版)
《TensorRT全流程部署指南》专栏文章目录: cap1:TensorRT介绍及CUDA环境安装cap2:1000分类的ResNet的TensorRT部署指南(python版)cap3:自定义数据集训练ResNet的TensorRT部署指南(python版&…...
每日一题——把数字翻译成字符串
把数字翻译成字符串 题目描述示例示例1示例2 题解动态规划代码实现复杂度分析 总结 题目描述 有一种将字母编码成数字的方式:‘a’->1, ‘b’->2, … , ‘z’->26。 现在给一串数字,返回有多少种可能的译码结果。 数据范围:字符串…...
我们来学HTTP/TCP -- 三次握手?
三次握手 题记三次呼叫结语 题记 来,我们来演示下川普王和普京帝会面了 哎呦!你好你好,握手…哎嗨!侬好侬好,握手…欧嘿呦玛斯,握手… 抓狂啊!作孽啊!!! 不说人话啊! 关键的是,“三…...
多媒体软件安全与授权新范例,用 CodeMeter 实现安全、高效的软件许可管理
背景概述 Reason Studios 成立于 1994 年,总部位于瑞典斯德哥尔摩,是全球领先的音乐制作软件开发商。凭借创新的软件产品和行业标准技术,如 ReWire 和 REX 文件格式,Reason Studios 为全球专业音乐人和业余爱好者提供了一系列高质…...
SQL复习
SQL复习 MySQL MySQL MySQL有什么特点? MySQL 不支持全外连接。 安装 数据类型 MySQL中的数据类型分为哪些? MySQL中的数据类型主要分为三大类:数值类型、字符串类型、日期时间类型。 其中, 数值类型又分为七种:T…...
红队视角出发的k8s敏感信息收集——日志与监控系统
针对 Kubernetes 日志与监控系统 的详细攻击视角分析,聚焦 集群审计日志 和 Prometheus/Grafana 暴露 的潜在风险及利用方法 攻击链示例 1. 攻击者通过容器逃逸进入 Pod → 2. 发现未认证的 Prometheus 服务 → 3. 查询环境变量标签获取数据库密码 → 4. 通过审…...
Flask中获取请求参数的一些方式总结
在 Flask 中,可以从 request 对象中获取各种类型的参数。以下是全面整理的获取参数的方式及示例代码。 1. 获取 URL 查询参数(Query String Parameters) URL 中的查询参数通过 ?keyvalue&key2value2 的形式传递,使用 reques…...
架构——LVS负载均衡主要模式及其原理、服务水平、优缺点
LVS(Linux Virtual Server)是一款高性能的开源负载均衡软件,支持多种负载均衡模式。以下是其主要模式及其原理、服务水平、优缺点: 1. NAT 模式(Network Address Translation) 原理: 请求流程…...
【漫话机器学习系列】093.代价函数和损失函数(Cost and Loss Functions)
代价函数和损失函数(Cost and Loss Functions)详解 1. 引言 在机器学习和深度学习领域,代价函数(Cost Function)和损失函数(Loss Function)是核心概念,它们决定了模型的优化方向。…...
Android 13 上通过修改 AOSP 拦截 SystemUI 音量调节事件
定位关键代码SystemUI 的音量调节逻辑主要集中在以下类中: VolumeDialogController.java:负责与 AudioService 交互。 VolumeDialogImpl.java:处理 UI 交互事件(如按钮点击)。 PhoneWindowManager.java:处理物理按键事件(如音量键)。 拦截音量调节事件 以 VolumeDialog…...
JSXBIN解密技术深度解析:Jsxer如何高效还原Adobe加密脚本
JSXBIN解密技术深度解析:Jsxer如何高效还原Adobe加密脚本 【免费下载链接】jsxer A fast and accurate JSXBIN decompiler. 项目地址: https://gitcode.com/gh_mirrors/js/jsxer 在Adobe创意生态系统中,JSXBIN格式作为ExtendScript脚本的二进制加…...
Claude年度数据可视化工具:安全架构与社交分享实践
1. 项目概述:一个专为Claude用户打造的年度数据可视化与分享工具 又到年底了,对于深度使用AI工具的朋友们来说,回顾过去一年的使用数据总是件有趣的事。你可能会好奇,自己在Claude上到底花了多少“脑细胞”(或者说&am…...
Unity 2D角色控制器避坑指南:为什么你的跳跃代码会让角色卡墙或穿模?
Unity 2D角色控制器避坑指南:为什么你的跳跃代码会让角色卡墙或穿模? 在2D平台游戏开发中,角色跳跃功能的实现看似简单,却暗藏诸多陷阱。许多开发者往往在基础功能完成后,才会在复杂地形测试中遭遇角色卡墙、穿模、空中…...
车辆换挡缓冲阀结构设计与优化AMESim仿真【附代码】
✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)缓冲阀动力学建模与AMESim参数化仿真:所…...
数据科学监控告警:构建智能系统健康监测的终极指南
数据科学监控告警:构建智能系统健康监测的终极指南 【免费下载链接】data-science 📊 Path to a free self-taught education in Data Science! 项目地址: https://gitcode.com/gh_mirrors/da/data-science GitHub 加速计划 / da / data-science …...
Ising机与Bounce-Bind机制在组合优化中的应用
1. Ising机与组合优化问题概述在计算复杂性理论中,组合优化问题(Combinatorial Optimization Problems, COPs)因其NP难特性而闻名。这类问题在物流调度、芯片设计、金融投资组合等领域广泛存在。传统计算机采用冯诺依曼架构,其串行…...
Pearcleaner终极指南:5分钟彻底清理Mac残留文件,免费开源更安心
Pearcleaner终极指南:5分钟彻底清理Mac残留文件,免费开源更安心 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 还在为Mac存储空间不…...
释放C28x主核性能:用TMS320F28035的CLA独立处理电机控制PWM与ADC采样
解锁TMS320F28035双核潜力:CLA协处理器在电机控制中的实战优化 当电机控制系统遇上越来越严苛的实时性要求时,传统单核架构的瓶颈逐渐显现。我曾在一个工业伺服驱动项目中,发现主CPU在20kHz开关频率下处理FOC算法时,MIPS占用率已接…...
2025届最火的十大降重复率方案解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 深度学习算法助力下的人工智能论文查重系统,会针对海量学术数据库开展比对分析&…...
基于Ollama与Llama 3.2构建本地多模态AI Web界面实战指南
1. 项目概述与核心价值最近在折腾本地大模型的朋友,估计对Ollama这个工具都不陌生。它确实让拉取和运行各种开源模型变得像ollama run llama3.2一句命令那么简单。但说实话,Ollama自带的命令行对话方式,对于想进行多轮复杂对话、上传图片进行…...
